{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Lesson-01-代码复现与参考答案"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入包\n",
    "# 用于加载波士顿房价数据集\n",
    "from sklearn.datasets import load_boston \n",
    "# pandas工具包 对于pandas陌生的同学可以参考官方10分钟上手教程：https://pandas.pydata.org/pandas-docs/stable/10min.html\n",
    "import pandas as pd \n",
    "# seaborn 用于画图\n",
    "import seaborn as sns\n",
    "import numpy as np # numpy\n",
    "# 显示画图\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "data = load_boston() # 加载数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dict_keys(['data', 'target', 'feature_names', 'DESCR', 'filename'])"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.keys() # data的里面的字段"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "      <th>8</th>\n",
       "      <th>9</th>\n",
       "      <th>10</th>\n",
       "      <th>11</th>\n",
       "      <th>12</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.00632</td>\n",
       "      <td>18.0</td>\n",
       "      <td>2.31</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.538</td>\n",
       "      <td>6.575</td>\n",
       "      <td>65.2</td>\n",
       "      <td>4.0900</td>\n",
       "      <td>1.0</td>\n",
       "      <td>296.0</td>\n",
       "      <td>15.3</td>\n",
       "      <td>396.90</td>\n",
       "      <td>4.98</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.02731</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.07</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.469</td>\n",
       "      <td>6.421</td>\n",
       "      <td>78.9</td>\n",
       "      <td>4.9671</td>\n",
       "      <td>2.0</td>\n",
       "      <td>242.0</td>\n",
       "      <td>17.8</td>\n",
       "      <td>396.90</td>\n",
       "      <td>9.14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.02729</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.07</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.469</td>\n",
       "      <td>7.185</td>\n",
       "      <td>61.1</td>\n",
       "      <td>4.9671</td>\n",
       "      <td>2.0</td>\n",
       "      <td>242.0</td>\n",
       "      <td>17.8</td>\n",
       "      <td>392.83</td>\n",
       "      <td>4.03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.03237</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.18</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.458</td>\n",
       "      <td>6.998</td>\n",
       "      <td>45.8</td>\n",
       "      <td>6.0622</td>\n",
       "      <td>3.0</td>\n",
       "      <td>222.0</td>\n",
       "      <td>18.7</td>\n",
       "      <td>394.63</td>\n",
       "      <td>2.94</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.06905</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.18</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.458</td>\n",
       "      <td>7.147</td>\n",
       "      <td>54.2</td>\n",
       "      <td>6.0622</td>\n",
       "      <td>3.0</td>\n",
       "      <td>222.0</td>\n",
       "      <td>18.7</td>\n",
       "      <td>396.90</td>\n",
       "      <td>5.33</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         0     1     2    3      4      5     6       7    8      9    10  \\\n",
       "0  0.00632  18.0  2.31  0.0  0.538  6.575  65.2  4.0900  1.0  296.0  15.3   \n",
       "1  0.02731   0.0  7.07  0.0  0.469  6.421  78.9  4.9671  2.0  242.0  17.8   \n",
       "2  0.02729   0.0  7.07  0.0  0.469  7.185  61.1  4.9671  2.0  242.0  17.8   \n",
       "3  0.03237   0.0  2.18  0.0  0.458  6.998  45.8  6.0622  3.0  222.0  18.7   \n",
       "4  0.06905   0.0  2.18  0.0  0.458  7.147  54.2  6.0622  3.0  222.0  18.7   \n",
       "\n",
       "       11    12  \n",
       "0  396.90  4.98  \n",
       "1  396.90  9.14  \n",
       "2  392.83  4.03  \n",
       "3  394.63  2.94  \n",
       "4  396.90  5.33  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dataframe = pd.DataFrame(data['data'])\n",
    "dataframe.head(5) # 查看dataframe的前5行，我们可以看到列名是数字"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD',\n",
       "       'TAX', 'PTRATIO', 'B', 'LSTAT'], dtype='<U7')"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['feature_names'] # 特征名称"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "表 ：波士顿房价数据集缩写特征的中文描述\n",
    "```\n",
    "名称\t中文描述\n",
    "CRIM\t住房所在城镇的人均犯罪率\n",
    "ZN\t住房用地超过 25000 平方尺的比例\n",
    "INDUS\t住房所在城镇非零售商用土地的比例\n",
    "CHAS\t有关查理斯河的虚拟变量（如果住房位于河边则为1,否则为0 ）\n",
    "NOX\t一氧化氮浓度\n",
    "RM\t每处住房的平均房间数\n",
    "AGE\t建于 1940 年之前的业主自住房比例\n",
    "DIS\t住房距离波士顿五大中心区域的加权距离\n",
    "RAD\t离住房最近的公路入口编号\n",
    "TAX 每 10000 美元的全额财产税金额\n",
    "PTRATIO\t\n",
    "住房所在城镇的师生比例\n",
    "B\t1000(Bk-0.63)^2,其中 Bk 指代城镇中黑人的比例\n",
    "LSTAT\t弱势群体人口所占比例\n",
    "MEDV\t业主自住房的中位数房价（以千美元计）\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>CRIM</th>\n",
       "      <th>ZN</th>\n",
       "      <th>INDUS</th>\n",
       "      <th>CHAS</th>\n",
       "      <th>NOX</th>\n",
       "      <th>RM</th>\n",
       "      <th>AGE</th>\n",
       "      <th>DIS</th>\n",
       "      <th>RAD</th>\n",
       "      <th>TAX</th>\n",
       "      <th>PTRATIO</th>\n",
       "      <th>B</th>\n",
       "      <th>LSTAT</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.00632</td>\n",
       "      <td>18.0</td>\n",
       "      <td>2.31</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.538</td>\n",
       "      <td>6.575</td>\n",
       "      <td>65.2</td>\n",
       "      <td>4.0900</td>\n",
       "      <td>1.0</td>\n",
       "      <td>296.0</td>\n",
       "      <td>15.3</td>\n",
       "      <td>396.90</td>\n",
       "      <td>4.98</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.02731</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.07</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.469</td>\n",
       "      <td>6.421</td>\n",
       "      <td>78.9</td>\n",
       "      <td>4.9671</td>\n",
       "      <td>2.0</td>\n",
       "      <td>242.0</td>\n",
       "      <td>17.8</td>\n",
       "      <td>396.90</td>\n",
       "      <td>9.14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.02729</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.07</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.469</td>\n",
       "      <td>7.185</td>\n",
       "      <td>61.1</td>\n",
       "      <td>4.9671</td>\n",
       "      <td>2.0</td>\n",
       "      <td>242.0</td>\n",
       "      <td>17.8</td>\n",
       "      <td>392.83</td>\n",
       "      <td>4.03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.03237</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.18</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.458</td>\n",
       "      <td>6.998</td>\n",
       "      <td>45.8</td>\n",
       "      <td>6.0622</td>\n",
       "      <td>3.0</td>\n",
       "      <td>222.0</td>\n",
       "      <td>18.7</td>\n",
       "      <td>394.63</td>\n",
       "      <td>2.94</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.06905</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.18</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.458</td>\n",
       "      <td>7.147</td>\n",
       "      <td>54.2</td>\n",
       "      <td>6.0622</td>\n",
       "      <td>3.0</td>\n",
       "      <td>222.0</td>\n",
       "      <td>18.7</td>\n",
       "      <td>396.90</td>\n",
       "      <td>5.33</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      CRIM    ZN  INDUS  CHAS    NOX     RM   AGE     DIS  RAD    TAX  \\\n",
       "0  0.00632  18.0   2.31   0.0  0.538  6.575  65.2  4.0900  1.0  296.0   \n",
       "1  0.02731   0.0   7.07   0.0  0.469  6.421  78.9  4.9671  2.0  242.0   \n",
       "2  0.02729   0.0   7.07   0.0  0.469  7.185  61.1  4.9671  2.0  242.0   \n",
       "3  0.03237   0.0   2.18   0.0  0.458  6.998  45.8  6.0622  3.0  222.0   \n",
       "4  0.06905   0.0   2.18   0.0  0.458  7.147  54.2  6.0622  3.0  222.0   \n",
       "\n",
       "   PTRATIO       B  LSTAT  \n",
       "0     15.3  396.90   4.98  \n",
       "1     17.8  396.90   9.14  \n",
       "2     17.8  392.83   4.03  \n",
       "3     18.7  394.63   2.94  \n",
       "4     18.7  396.90   5.33  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dataframe.columns = data['feature_names'] # 将数字列名替换为特征的名字\n",
    "dataframe.head(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>CRIM</th>\n",
       "      <th>ZN</th>\n",
       "      <th>INDUS</th>\n",
       "      <th>CHAS</th>\n",
       "      <th>NOX</th>\n",
       "      <th>RM</th>\n",
       "      <th>AGE</th>\n",
       "      <th>DIS</th>\n",
       "      <th>RAD</th>\n",
       "      <th>TAX</th>\n",
       "      <th>PTRATIO</th>\n",
       "      <th>B</th>\n",
       "      <th>LSTAT</th>\n",
       "      <th>price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.00632</td>\n",
       "      <td>18.0</td>\n",
       "      <td>2.31</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.538</td>\n",
       "      <td>6.575</td>\n",
       "      <td>65.2</td>\n",
       "      <td>4.0900</td>\n",
       "      <td>1.0</td>\n",
       "      <td>296.0</td>\n",
       "      <td>15.3</td>\n",
       "      <td>396.9</td>\n",
       "      <td>4.98</td>\n",
       "      <td>24.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.02731</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.07</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.469</td>\n",
       "      <td>6.421</td>\n",
       "      <td>78.9</td>\n",
       "      <td>4.9671</td>\n",
       "      <td>2.0</td>\n",
       "      <td>242.0</td>\n",
       "      <td>17.8</td>\n",
       "      <td>396.9</td>\n",
       "      <td>9.14</td>\n",
       "      <td>21.6</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      CRIM    ZN  INDUS  CHAS    NOX     RM   AGE     DIS  RAD    TAX  \\\n",
       "0  0.00632  18.0   2.31   0.0  0.538  6.575  65.2  4.0900  1.0  296.0   \n",
       "1  0.02731   0.0   7.07   0.0  0.469  6.421  78.9  4.9671  2.0  242.0   \n",
       "\n",
       "   PTRATIO      B  LSTAT  price  \n",
       "0     15.3  396.9   4.98   24.0  \n",
       "1     17.8  396.9   9.14   21.6  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dataframe['price'] = data['target'] # target为房价，也是我们的目标值，我们将目标值赋值给dataframe\n",
    "dataframe.head(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f72a2c39a90>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.heatmap(dataframe.corr(), annot=True, fmt='.1f') # 查看特征与price的相关性系数，正相关和负相关"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x7f729e0a7d50>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(dataframe['RM'], dataframe['price'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 查看部分特征与price的数据分布展示 \n",
    "plt.figure(figsize=(20, 5))\n",
    "\n",
    "features = ['LSTAT', 'RM']\n",
    "target = dataframe['price']\n",
    "\n",
    "for i, col in enumerate(features):\n",
    "    plt.subplot(1, len(features) , i+1)\n",
    "    x = dataframe[col]\n",
    "    y = target\n",
    "    plt.scatter(x, y, marker='o')\n",
    "    plt.title('{} vs price'.format(col))\n",
    "    plt.xlabel(col)\n",
    "    plt.ylabel('price')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 简单实例：单变量预测价格"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = dataframe['RM'] "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "y = dataframe['price']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "history_notes = {_x : _y for _x, _y in zip(x, y)}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "24.0"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "history_notes[6.575]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[23.8, 24.0, 24.8]"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 寻找与RM：6.57最相近的前三个价格，\n",
    "similary_ys = [y for _, y in sorted(history_notes.items(), key=lambda x_y: (x_y[0] - 6.57) ** 2)[:3]]\n",
    "similary_ys"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "24.2"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.mean(similary_ys) # 计算三个的平均值"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 用历史数据来预测未曾见到的过的数据，最直接的方法"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## K-Neighbor-Nearst"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "def knn(query_x, history, top_n=3):\n",
    "    sorted_notes = sorted(history.items(), key=lambda x_y: (x_y[0] - query_x) ** 2) \n",
    "    similar_notes = sorted_notes[:top_n]\n",
    "    similar_ys = [y for _, y in similar_notes]\n",
    "    \n",
    "    return np.mean(similar_ys)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "15.700000000000001"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "knn(5.4, history_notes)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 为了更快的获得结果，我们希望通过拟合函数来获得预测能力"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$ f(rm) = k * rm + b $$ "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Random Approach"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$ Loss(k, b) = \\frac{1}{n} \\sum_{i \\in N} (\\hat{y_i} - y_i) ^ 2 $$\n",
    "$$ Loss(k, b) = \\frac{1}{n} \\sum_{i \\in N} ((k * rm_i + b) - y_i) ^ 2 $$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "def loss(y_hat, y):\n",
    "    return np.mean((y_hat - y) ** 2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "import random"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "在第0步，我们获得了函数 f(rm) = 57 * rm + 24, 此时loss是: 130551.81580652756\n",
      "在第1步，我们获得了函数 f(rm) = -33 * rm + -68, 此时loss是: 89676.693186923\n",
      "在第2步，我们获得了函数 f(rm) = -4 * rm + 28, 此时loss是: 515.1409738181812\n",
      "在第25步，我们获得了函数 f(rm) = 5 * rm + -6, 此时loss是: 60.24549441699608\n",
      "在第981步，我们获得了函数 f(rm) = 9 * rm + -37, 此时loss是: 52.43310515217392\n"
     ]
    }
   ],
   "source": [
    "min_loss = float('inf')\n",
    "best_k, bes_b = None, None\n",
    "\n",
    "for step in range(1000):\n",
    "    min_v, max_v = -100, 100\n",
    "    k, b = random.randrange(min_v, max_v), random.randrange(min_v, max_v)\n",
    "    y_hats = [k * rm_i  + b for rm_i in x]\n",
    "    current_loss = loss(y_hats, y)\n",
    "    \n",
    "    if current_loss < min_loss:\n",
    "        min_loss = current_loss\n",
    "        best_k, best_b = k, b\n",
    "        print('在第{}步，我们获得了函数 f(rm) = {} * rm + {}, 此时loss是: {}'.format(step, k, b, current_loss))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x7f729c74ffd0>"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x, y)\n",
    "plt.scatter(x, [best_k * rm + best_b for rm in x])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 蒙特卡洛模拟"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Supervisor"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$ Loss(k, b) = \\frac{1}{n} \\sum_{i \\in N} ((k * rm_i + b) - y_i) ^ 2 $$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$ \\frac{\\partial{loss(k, b)}}{\\partial{k}} = \\frac{2}{n}\\sum_{i \\in N}(k * rm_i + b - y_i) * rm_i $$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$ \\frac{\\partial{loss(k, b)}}{\\partial{b}} = \\frac{2}{n}\\sum_{i \\in N}(k * rm_i + b - y_i)$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "在第0步，我们获得了函数 f(rm) = 2.8744088302518844 * rm + 1.110361739204391, 此时loss是: 73.9844284482414\n",
      "在第1步，我们获得了函数 f(rm) = 3.3578314244222582 * rm + 1.1775184593443448, 此时loss是: 59.92165914484249\n",
      "在第2步，我们获得了函数 f(rm) = 3.4461780492043674 * rm + 1.1825693599025808, 此时loss是: 59.45635139232986\n",
      "在第3步，我们获得了函数 f(rm) = 3.4632313756073407 * rm + 1.17641471772741, 此时loss是: 59.43383001458346\n",
      "在第4步，我们获得了函数 f(rm) = 3.4674192754270714 * rm + 1.1682396899651253, 此时loss是: 59.42573091628072\n",
      "在第5步，我们获得了函数 f(rm) = 3.46928529075308 * rm + 1.159701774373729, 此时loss是: 59.418105001956405\n",
      "在第6步，我们获得了函数 f(rm) = 3.470732045785966 * rm + 1.1511000726124574, 此时loss是: 59.410498036597886\n",
      "在第7步，我们获得了函数 f(rm) = 3.472102876699924 * rm + 1.1424885583578164, 此时loss是: 59.4028952269577\n",
      "在第8步，我们获得了函数 f(rm) = 3.473459739938353 * rm + 1.133876970966246, 此时loss是: 59.39529608961225\n",
      "在第9步，我们获得了函数 f(rm) = 3.4748138158522424 * rm + 1.1252670675351637, 此时loss是: 59.3877006071185\n",
      "在第10步，我们获得了函数 f(rm) = 3.4761671220445876 * rm + 1.1166591647316728, 此时loss是: 59.380108777208484\n",
      "在第11步，我们获得了函数 f(rm) = 3.4775200226640233 * rm + 1.1080533192915911, 此时loss是: 59.372520598109034\n",
      "在第12步，我们获得了函数 f(rm) = 3.478872583486747 * rm + 1.0994495410451997, 此时loss是: 59.36493606806402\n",
      "在第13步，我们获得了函数 f(rm) = 3.4802248164464484 * rm + 1.0908478313585865, 此时loss是: 59.357355185318625\n",
      "在第14步，我们获得了函数 f(rm) = 3.4815767237607056 * rm + 1.0822481900705405, 此时loss是: 59.34977794811899\n",
      "在第15步，我们获得了函数 f(rm) = 3.482928305893771 * rm + 1.0736506167443416, 此时loss是: 59.34220435471185\n",
      "在第16步，我们获得了函数 f(rm) = 3.484279562993486 * rm + 1.0650551108936508, 此时loss是: 59.33463440334502\n",
      "在第17步，我们获得了函数 f(rm) = 3.485630495150581 * rm + 1.0564616720232733, 此时loss是: 59.32706809226726\n",
      "在第18步，我们获得了函数 f(rm) = 3.486981102445462 * rm + 1.0478702996365143, 此时loss是: 59.319505419727804\n",
      "在第19步，我们获得了函数 f(rm) = 3.4883313849566604 * rm + 1.0392809932365061, 此时loss是: 59.31194638397699\n",
      "在第20步，我们获得了函数 f(rm) = 3.48968134276235 * rm + 1.0306937523264479, 此时loss是: 59.30439098326594\n",
      "在第21步，我们获得了函数 f(rm) = 3.4910309759406277 * rm + 1.0221085764096485, 此时loss是: 59.29683921584657\n",
      "在第22步，我们获得了函数 f(rm) = 3.4923802845695597 * rm + 1.0135254649895347, 此时loss是: 59.28929107997173\n",
      "在第23步，我们获得了函数 f(rm) = 3.4937292687271917 * rm + 1.0049444175696525, 此时loss是: 59.28174657389502\n",
      "在第24步，我们获得了函数 f(rm) = 3.495077928491549 * rm + 0.996365433653667, 此时loss是: 59.27420569587106\n",
      "在第25步，我们获得了函数 f(rm) = 3.49642626394064 * rm + 0.9877885127453628, 此时loss是: 59.26666844415496\n",
      "在第26步，我们获得了函数 f(rm) = 3.4977742751524534 * rm + 0.9792136543486439, 此时loss是: 59.25913481700297\n",
      "在第27步，我们获得了函数 f(rm) = 3.4991219622049603 * rm + 0.9706408579675334, 此时loss是: 59.25160481267213\n",
      "在第28步，我们获得了函数 f(rm) = 3.5004693251761108 * rm + 0.9620701231061737, 此时loss是: 59.244078429420135\n",
      "在第29步，我们获得了函数 f(rm) = 3.5018163641438376 * rm + 0.9535014492688265, 此时loss是: 59.236555665505776\n",
      "在第30步，我们获得了函数 f(rm) = 3.503163079186054 * rm + 0.9449348359598726, 此时loss是: 59.22903651918861\n",
      "在第31步，我们获得了函数 f(rm) = 3.5045094703806567 * rm + 0.9363702826838123, 此时loss是: 59.221520988728805\n",
      "在第32步，我们获得了函数 f(rm) = 3.5058555378055214 * rm + 0.9278077889452646, 此时loss是: 59.214009072387725\n",
      "在第33步，我们获得了函数 f(rm) = 3.507201281538505 * rm + 0.9192473542489679, 此时loss是: 59.20650076842722\n",
      "在第34步，我们获得了函数 f(rm) = 3.5085467016574476 * rm + 0.9106889780997797, 此时loss是: 59.19899607511032\n",
      "在第35步，我们获得了函数 f(rm) = 3.509891798240168 * rm + 0.9021326600026763, 此时loss是: 59.19149499070053\n",
      "在第36步，我们获得了函数 f(rm) = 3.511236571364469 * rm + 0.8935783994627536, 此时loss是: 59.18399751346254\n",
      "在第37步，我们获得了函数 f(rm) = 3.5125810211081325 * rm + 0.885026195985226, 此时loss是: 59.176503641661604\n",
      "在第38步，我们获得了函数 f(rm) = 3.513925147548923 * rm + 0.8764760490754271, 此时loss是: 59.16901337356397\n",
      "在第39步，我们获得了函数 f(rm) = 3.515268950764585 * rm + 0.8679279582388093, 此时loss是: 59.16152670743662\n",
      "在第40步，我们获得了函数 f(rm) = 3.5166124308328475 * rm + 0.8593819229809442, 此时loss是: 59.154043641547496\n",
      "在第41步，我们获得了函数 f(rm) = 3.5179555878314157 * rm + 0.8508379428075219, 此时loss是: 59.1465641741652\n",
      "在第42步，我们获得了函数 f(rm) = 3.5192984218379806 * rm + 0.8422960172243518, 此时loss是: 59.13908830355927\n",
      "在第43步，我们获得了函数 f(rm) = 3.520640932930212 * rm + 0.8337561457373618, 此时loss是: 59.13161602800013\n",
      "在第44步，我们获得了函数 f(rm) = 3.521983121185763 * rm + 0.8252183278525989, 此时loss是: 59.124147345758935\n",
      "在第45步，我们获得了函数 f(rm) = 3.5233249866822653 * rm + 0.8166825630762284, 此时loss是: 59.11668225510766\n",
      "在第46步，我们获得了函数 f(rm) = 3.5246665294973347 * rm + 0.808148850914535, 此时loss是: 59.10922075431919\n",
      "在第47步，我们获得了函数 f(rm) = 3.5260077497085662 * rm + 0.7996171908739217, 此时loss是: 59.101762841667224\n",
      "在第48步，我们获得了函数 f(rm) = 3.5273486473935383 * rm + 0.7910875824609104, 此时loss是: 59.09430851542629\n",
      "在第49步，我们获得了函数 f(rm) = 3.5286892226298083 * rm + 0.7825600251821413, 此时loss是: 59.086857773871664\n",
      "在第50步，我们获得了函数 f(rm) = 3.5300294754949166 * rm + 0.7740345185443737, 此时loss是: 59.079410615279606\n",
      "在第51步，我们获得了函数 f(rm) = 3.5313694060663856 * rm + 0.7655110620544854, 此时loss是: 59.07196703792703\n",
      "在第52步，我们获得了函数 f(rm) = 3.5327090144217164 * rm + 0.7569896552194725, 此时loss是: 59.064527040091804\n",
      "在第53步，我们获得了函数 f(rm) = 3.5340483006383936 * rm + 0.7484702975464499, 此时loss是: 59.0570906200526\n",
      "在第54步，我们获得了函数 f(rm) = 3.535387264793883 * rm + 0.739952988542651, 此时loss是: 59.04965777608888\n",
      "在第55步，我们获得了函数 f(rm) = 3.536725906965631 * rm + 0.7314377277154277, 此时loss是: 59.04222850648095\n",
      "在第56步，我们获得了函数 f(rm) = 3.5380642272310663 * rm + 0.7229245145722504, 此时loss是: 59.034802809509955\n",
      "在第57步，我们获得了函数 f(rm) = 3.5394022256675974 * rm + 0.7144133486207077, 此时loss是: 59.02738068345792\n",
      "在第58步，我们获得了函数 f(rm) = 3.540739902352616 * rm + 0.7059042293685069, 此时loss是: 59.01996212660762\n",
      "在第59步，我们获得了函数 f(rm) = 3.5420772573634944 * rm + 0.6973971563234737, 此时loss是: 59.01254713724262\n",
      "在第60步，我们获得了函数 f(rm) = 3.543414290777586 * rm + 0.6888921289935518, 此时loss是: 59.005135713647334\n",
      "在第61步，我们获得了函数 f(rm) = 3.544751002672226 * rm + 0.6803891468868036, 此时loss是: 58.99772785410711\n",
      "在第62步，我们获得了函数 f(rm) = 3.546087393124731 * rm + 0.6718882095114096, 此时loss是: 58.99032355690804\n",
      "在第63步，我们获得了函数 f(rm) = 3.5474234622123992 * rm + 0.6633893163756687, 此时loss是: 58.982922820337016\n",
      "在第64步，我们获得了函数 f(rm) = 3.548759210012509 * rm + 0.6548924669879979, 此时loss是: 58.97552564268175\n",
      "在第65步，我们获得了函数 f(rm) = 3.550094636602322 * rm + 0.6463976608569324, 此时loss是: 58.96813202223086\n",
      "在第66步，我们获得了函数 f(rm) = 3.55142974205908 * rm + 0.6379048974911258, 此时loss是: 58.960741957273726\n",
      "在第67步，我们获得了函数 f(rm) = 3.5527645264600074 * rm + 0.6294141763993496, 此时loss是: 58.9533554461005\n",
      "在第68步，我们获得了函数 f(rm) = 3.554098989882308 * rm + 0.6209254970904936, 此时loss是: 58.94597248700233\n",
      "在第69步，我们获得了函数 f(rm) = 3.555433132403169 * rm + 0.6124388590735658, 此时loss是: 58.938593078270934\n",
      "在第70步，我们获得了函数 f(rm) = 3.5567669540997575 * rm + 0.6039542618576917, 此时loss是: 58.93121721819899\n",
      "在第71步，我们获得了函数 f(rm) = 3.5581004550492246 * rm + 0.5954717049521158, 此时loss是: 58.92384490508017\n",
      "在第72步，我们获得了函数 f(rm) = 3.5594336353286993 * rm + 0.5869911878661996, 此时loss是: 58.91647613720868\n",
      "在第73步，我们获得了函数 f(rm) = 3.560766495015294 * rm + 0.5785127101094232, 此时loss是: 58.90911091287958\n",
      "在第74步，我们获得了函数 f(rm) = 3.5620990341861036 * rm + 0.5700362711913844, 此时loss是: 58.901749230389\n",
      "在第75步，我们获得了函数 f(rm) = 3.5634312529182024 * rm + 0.5615618706217993, 此时loss是: 58.89439108803351\n",
      "在第76步，我们获得了函数 f(rm) = 3.564763151288647 * rm + 0.5530895079105014, 此时loss是: 58.887036484110936\n",
      "在第77步，我们获得了函数 f(rm) = 3.566094729374475 * rm + 0.5446191825674422, 此时loss是: 58.879685416919486\n",
      "在第78步，我们获得了函数 f(rm) = 3.567425987252707 * rm + 0.5361508941026916, 此时loss是: 58.87233788475852\n",
      "在第79步，我们获得了函数 f(rm) = 3.568756925000344 * rm + 0.5276846420264365, 此时loss是: 58.86499388592804\n",
      "在第80步，我们获得了函数 f(rm) = 3.570087542694368 * rm + 0.5192204258489821, 此时loss是: 58.85765341872892\n",
      "在第81步，我们获得了函数 f(rm) = 3.571417840411743 * rm + 0.5107582450807512, 此时loss是: 58.850316481462855\n",
      "在第82步，我们获得了函数 f(rm) = 3.572747818229415 * rm + 0.5022980992322843, 此时loss是: 58.842983072432304\n",
      "在第83步，我们获得了函数 f(rm) = 3.5740774762243106 * rm + 0.49383998781423954, 此时loss是: 58.835653189940736\n",
      "在第84步，我们获得了函数 f(rm) = 3.575406814473338 * rm + 0.4853839103373929, 此时loss是: 58.82832683229207\n",
      "在第85步，我们获得了函数 f(rm) = 3.5767358330533883 * rm + 0.47692986631263806, 此时loss是: 58.8210039977914\n",
      "在第86步，我们获得了函数 f(rm) = 3.578064532041332 * rm + 0.46847785525098606, 此时loss是: 58.813684684744324\n",
      "在第87步，我们获得了函数 f(rm) = 3.5793929115140224 * rm + 0.46002787666356576, 此时loss是: 58.806368891457716\n",
      "在第88步，我们获得了函数 f(rm) = 3.580720971548294 * rm + 0.4515799300616233, 此时loss是: 58.799056616238715\n",
      "在第89步，我们获得了函数 f(rm) = 3.582048712220964 * rm + 0.44313401495652266, 此时loss是: 58.791747857395634\n",
      "在第90步，我们获得了函数 f(rm) = 3.583376133608828 * rm + 0.4346901308597451, 此时loss是: 58.78444261323747\n",
      "在第91步，我们获得了函数 f(rm) = 3.584703235788666 * rm + 0.4262482772828896, 此时loss是: 58.77714088207407\n",
      "在第92步，我们获得了函数 f(rm) = 3.5860300188372394 * rm + 0.41780845373767234, 此时loss是: 58.769842662216085\n",
      "在第93步，我们获得了函数 f(rm) = 3.58735648283129 * rm + 0.40937065973592707, 此时loss是: 58.762547951974966\n",
      "在第94步，我们获得了函数 f(rm) = 3.588682627847541 * rm + 0.40093489478960487, 此时loss是: 58.75525674966299\n",
      "在第95步，我们获得了函数 f(rm) = 3.5900084539626986 * rm + 0.3925011584107742, 此时loss是: 58.74796905359317\n",
      "在第96步，我们获得了函数 f(rm) = 3.5913339612534485 * rm + 0.38406945011162075, 此时loss是: 58.740684862079526\n",
      "在第97步，我们获得了函数 f(rm) = 3.5926591497964604 * rm + 0.37563976940444765, 此时loss是: 58.73340417343669\n",
      "在第98步，我们获得了函数 f(rm) = 3.593984019668383 * rm + 0.36721211580167534, 此时loss是: 58.7261269859802\n",
      "在第99步，我们获得了函数 f(rm) = 3.5953085709458494 * rm + 0.35878648881584146, 此时loss是: 58.71885329802639\n",
      "在第100步，我们获得了函数 f(rm) = 3.5966328037054716 * rm + 0.3503628879596007, 此时loss是: 58.71158310789234\n",
      "在第101步，我们获得了函数 f(rm) = 3.5979567180238448 * rm + 0.3419413127457252, 此时loss是: 58.70431641389611\n",
      "在第102步，我们获得了函数 f(rm) = 3.599280313977545 * rm + 0.3335217626871041, 此时loss是: 58.69705321435627\n",
      "在第103步，我们获得了函数 f(rm) = 3.60060359164313 * rm + 0.3251042372967437, 此时loss是: 58.68979350759253\n",
      "在第104步，我们获得了函数 f(rm) = 3.601926551097139 * rm + 0.3166887360877675, 此时loss是: 58.68253729192521\n",
      "在第105步，我们获得了函数 f(rm) = 3.603249192416095 * rm + 0.3082752585734161, 此时loss是: 58.67528456567555\n",
      "在第106步，我们获得了函数 f(rm) = 3.604571515676498 * rm + 0.29986380426704684, 此时loss是: 58.66803532716539\n",
      "在第107步，我们获得了函数 f(rm) = 3.605893520954833 * rm + 0.29145437268213453, 此时loss是: 58.66078957471771\n",
      "在第108步，我们获得了函数 f(rm) = 3.6072152083275673 * rm + 0.28304696333227075, 此时loss是: 58.653547306656\n",
      "在第109步，我们获得了函数 f(rm) = 3.608536577871147 * rm + 0.274641575731164, 此时loss是: 58.64630852130461\n",
      "在第110步，我们获得了函数 f(rm) = 3.609857629662001 * rm + 0.2662382093926398, 此时loss是: 58.63907321698885\n",
      "在第111步，我们获得了函数 f(rm) = 3.611178363776541 * rm + 0.2578368638306406, 此时loss是: 58.63184139203472\n",
      "在第112步，我们获得了函数 f(rm) = 3.6124987802911592 * rm + 0.24943753855922562, 此时loss是: 58.62461304476911\n",
      "在第113步，我们获得了函数 f(rm) = 3.6138188792822294 * rm + 0.24104023309257105, 此时loss是: 58.617388173519444\n",
      "在第114步，我们获得了函数 f(rm) = 3.615138660826106 * rm + 0.23264494694496973, 此时loss是: 58.61016677661434\n",
      "在第115步，我们获得了函数 f(rm) = 3.6164581249991286 * rm + 0.22425167963083176, 此时loss是: 58.602948852382895\n",
      "在第116步，我们获得了函数 f(rm) = 3.6177772718776144 * rm + 0.21586043066468333, 此时loss是: 58.59573439915528\n",
      "在第117步，我们获得了函数 f(rm) = 3.619096101537864 * rm + 0.20747119956116786, 此时loss是: 58.58852341526231\n",
      "在第118步，我们获得了函数 f(rm) = 3.6204146140561604 * rm + 0.19908398583504539, 此时loss是: 58.58131589903548\n",
      "在第119步，我们获得了函数 f(rm) = 3.621732809508767 * rm + 0.1906987890011926, 此时loss是: 58.574111848807405\n",
      "在第120步，我们获得了函数 f(rm) = 3.623050687971929 * rm + 0.18231560857460288, 此时loss是: 58.56691126291129\n",
      "在第121步，我们获得了函数 f(rm) = 3.6243682495218743 * rm + 0.17393444407038625, 此时loss是: 58.55971413968113\n",
      "在第122步，我们获得了函数 f(rm) = 3.625685494234811 * rm + 0.16555529500376906, 此时loss是: 58.552520477451786\n",
      "在第123步，我们获得了函数 f(rm) = 3.6270024221869295 * rm + 0.15717816089009465, 此时loss是: 58.54533027455896\n",
      "在第124步，我们获得了函数 f(rm) = 3.628319033454403 * rm + 0.1488030412448228, 此时loss是: 58.53814352933914\n",
      "在第125步，我们获得了函数 f(rm) = 3.629635328113385 * rm + 0.1404299355835296, 此时loss是: 58.53096024012948\n",
      "在第126步，我们获得了函数 f(rm) = 3.6309513062400103 * rm + 0.13205884342190774, 此时loss是: 58.52378040526805\n",
      "在第127步，我们获得了函数 f(rm) = 3.6322669679103967 * rm + 0.12368976427576646, 此时loss是: 58.51660402309368\n",
      "在第128步，我们获得了函数 f(rm) = 3.633582313200643 * rm + 0.1153226976610314, 此时loss是: 58.50943109194609\n",
      "在第129步，我们获得了函数 f(rm) = 3.6348973421868305 * rm + 0.10695764309374459, 此时loss是: 58.50226161016568\n",
      "在第130步，我们获得了函数 f(rm) = 3.636212054945021 * rm + 0.09859460009006435, 此时loss是: 58.49509557609367\n",
      "在第131步，我们获得了函数 f(rm) = 3.6375264515512584 * rm + 0.09023356816626546, 此时loss是: 58.48793298807225\n",
      "在第132步，我们获得了函数 f(rm) = 3.638840532081569 * rm + 0.08187454683873896, 此时loss是: 58.48077384444407\n",
      "在第133步，我们获得了函数 f(rm) = 3.6401542966119593 * rm + 0.07351753562399213, 此时loss是: 58.47361814355282\n",
      "在第134步，我们获得了函数 f(rm) = 3.6414677452184194 * rm + 0.06516253403864881, 此时loss是: 58.46646588374297\n",
      "在第135步，我们获得了函数 f(rm) = 3.6427808779769206 * rm + 0.05680954159944881, 此时loss是: 58.459317063359805\n",
      "在第136步，我们获得了函数 f(rm) = 3.644093694963414 * rm + 0.04845855782324811, 此时loss是: 58.45217168074926\n",
      "在第137步，我们获得了函数 f(rm) = 3.6454061962538358 * rm + 0.04010958222701905, 此时loss是: 58.445029734258135\n",
      "在第138步，我们获得了函数 f(rm) = 3.646718381924101 * rm + 0.03176261432785008, 此时loss是: 58.437891222234185\n",
      "在第139步，我们获得了函数 f(rm) = 3.6480302520501087 * rm + 0.023417653642945666, 此时loss是: 58.43075614302557\n",
      "在第140步，我们获得了函数 f(rm) = 3.6493418067077372 * rm + 0.015074699689626452, 此时loss是: 58.423624494981766\n",
      "在第141步，我们获得了函数 f(rm) = 3.650653045972848 * rm + 0.006733751985329085, 此时loss是: 58.41649627645268\n",
      "在第142步，我们获得了函数 f(rm) = 3.651963969921285 * rm + -0.0016051899523935164, 此时loss是: 58.40937148578895\n",
      "在第143步，我们获得了函数 f(rm) = 3.6532745786288725 * rm + -0.009942126605872684, 此时loss是: 58.40225012134243\n",
      "在第144步，我们获得了函数 f(rm) = 3.6545848721714176 * rm + -0.01827705845732363, 此时loss是: 58.3951321814653\n",
      "在第145步，我们获得了函数 f(rm) = 3.6558948506247084 * rm + -0.02660998598884565, 此时loss是: 58.3880176645108\n",
      "在第146步，我们获得了函数 f(rm) = 3.6572045140645155 * rm + -0.034940909682422056, 此时loss是: 58.38090656883286\n",
      "在第147步，我们获得了函数 f(rm) = 3.658513862566591 * rm + -0.04326983001992029, 此时loss是: 58.37379889278626\n",
      "在第148步，我们获得了函数 f(rm) = 3.659822896206668 * rm + -0.05159674748309199, 此时loss是: 58.36669463472654\n",
      "在第149步，我们获得了函数 f(rm) = 3.6611316150604627 * rm + -0.05992166255357284, 此时loss是: 58.35959379301012\n",
      "在第150步，我们获得了函数 f(rm) = 3.6624400192036726 * rm + -0.0682445757128827, 此时loss是: 58.35249636599393\n",
      "在第151步，我们获得了函数 f(rm) = 3.663748108711976 * rm + -0.0765654874424258, 此时loss是: 58.345402352036054\n",
      "在第152步，我们获得了函数 f(rm) = 3.6650558836610347 * rm + -0.08488439822349036, 此时loss是: 58.338311749495055\n",
      "在第153步，我们获得了函数 f(rm) = 3.666363344126491 * rm + -0.0932013085372491, 此时loss是: 58.33122455673063\n",
      "在第154步，我们获得了函数 f(rm) = 3.66767049018397 * rm + -0.10151621886475883, 此时loss是: 58.32414077210292\n",
      "在第155步，我们获得了函数 f(rm) = 3.6689773219090775 * rm + -0.10982912968696083, 此时loss是: 58.31706039397298\n",
      "在第156步，我们获得了函数 f(rm) = 3.6702838393774018 * rm + -0.11814004148468067, 此时loss是: 58.30998342070273\n",
      "在第157步，我们获得了函数 f(rm) = 3.671590042664513 * rm + -0.12644895473862827, 此时loss是: 58.30290985065479\n",
      "在第158步，我们获得了函数 f(rm) = 3.672895931845963 * rm + -0.13475586992939795, 此时loss是: 58.29583968219271\n",
      "在第159步，我们获得了函数 f(rm) = 3.674201506997286 * rm + -0.14306078753746848, 此时loss是: 58.28877291368054\n",
      "在第160步，我们获得了函数 f(rm) = 3.6755067681939972 * rm + -0.1513637080432031, 此时loss是: 58.28170954348333\n",
      "在第161步，我们获得了函数 f(rm) = 3.676811715511594 * rm + -0.15966463192684957, 此时loss是: 58.27464956996694\n",
      "在第162步，我们获得了函数 f(rm) = 3.678116349025555 * rm + -0.1679635596685401, 此时loss是: 58.26759299149789\n",
      "在第163步，我们获得了函数 f(rm) = 3.6794206688113418 * rm + -0.17626049174829145, 此时loss是: 58.26053980644359\n",
      "在第164步，我们获得了函数 f(rm) = 3.680724674944398 * rm + -0.18455542864600494, 此时loss是: 58.25349001317218\n",
      "在第165步，我们获得了函数 f(rm) = 3.682028367500147 * rm + -0.19284837084146664, 此时loss是: 58.246443610052616\n",
      "在第166步，我们获得了函数 f(rm) = 3.6833317465539963 * rm + -0.20113931881434696, 此时loss是: 58.23940059545456\n",
      "在第167步，我们获得了函数 f(rm) = 3.6846348121813346 * rm + -0.2094282730442012, 此时loss是: 58.23236096774857\n",
      "在第168步，我们获得了函数 f(rm) = 3.6859375644575314 * rm + -0.21771523401046933, 此时loss是: 58.225324725305924\n",
      "在第169步，我们获得了函数 f(rm) = 3.68724000345794 * rm + -0.2260002021924758, 此时loss是: 58.21829186649869\n",
      "在第170步，我们获得了函数 f(rm) = 3.6885421292578937 * rm + -0.23428317806943, 此时loss是: 58.211262389699726\n",
      "在第171步，我们获得了函数 f(rm) = 3.6898439419327085 * rm + -0.24256416212042614, 此时loss是: 58.204236293282584\n",
      "在第172步，我们获得了函数 f(rm) = 3.6911454415576834 * rm + -0.25084315482444297, 此时loss是: 58.197213575621845\n",
      "在第173步，我们获得了函数 f(rm) = 3.692446628208097 * rm + -0.25912015666034427, 此时loss是: 58.190194235092676\n",
      "在第174步，我们获得了函数 f(rm) = 3.693747501959211 * rm + -0.26739516810687863, 此时loss是: 58.18317827007094\n",
      "在第175步，我们获得了函数 f(rm) = 3.6950480628862703 * rm + -0.2756681896426794, 此时loss是: 58.17616567893342\n",
      "在第176步，我们获得了函数 f(rm) = 3.696348311064499 * rm + -0.283939221746265, 此时loss是: 58.169156460057856\n",
      "在第177步，我们获得了函数 f(rm) = 3.6976482465691056 * rm + -0.2922082648960386, 此时loss是: 58.162150611822305\n",
      "在第178步，我们获得了函数 f(rm) = 3.698947869475279 * rm + -0.3004753195702886, 此时loss是: 58.15514813260606\n",
      "在第179步，我们获得了函数 f(rm) = 3.7002471798581897 * rm + -0.30874038624718814, 此时loss是: 58.148149020788914\n",
      "在第180步，我们获得了函数 f(rm) = 3.7015461777929914 * rm + -0.3170034654047954, 此时loss是: 58.14115327475155\n",
      "在第181步，我们获得了函数 f(rm) = 3.7028448633548203 * rm + -0.32526455752105354, 此时loss是: 58.1341608928754\n",
      "在第182步，我们获得了函数 f(rm) = 3.704143236618792 * rm + -0.3335236630737911, 此时loss是: 58.127171873542736\n",
      "在第183步，我们获得了函数 f(rm) = 3.705441297660006 * rm + -0.34178078254072136, 此时loss是: 58.12018621513647\n",
      "在第184步，我们获得了函数 f(rm) = 3.706739046553543 * rm + -0.3500359163994429, 此时loss是: 58.11320391604047\n",
      "在第185步，我们获得了函数 f(rm) = 3.708036483374466 * rm + -0.3582890651274395, 此时loss是: 58.10622497463916\n",
      "在第186步，我们获得了函数 f(rm) = 3.7093336081978205 * rm + -0.3665402292020799, 此时loss是: 58.09924938931809\n",
      "在第187步，我们获得了函数 f(rm) = 3.7106304210986325 * rm + -0.3747894091006183, 此时loss是: 58.09227715846309\n",
      "在第188步，我们获得了函数 f(rm) = 3.7119269221519104 * rm + -0.38303660530019407, 此时loss是: 58.08530828046127\n",
      "在第189步，我们获得了函数 f(rm) = 3.7132231114326455 * rm + -0.39128181827783165, 此时loss是: 58.07834275370016\n",
      "在第190步，我们获得了函数 f(rm) = 3.7145189890158106 * rm + -0.39952504851044096, 此时loss是: 58.07138057656825\n",
      "在第191步，我们获得了函数 f(rm) = 3.715814554976359 * rm + -0.4077662964748172, 此时loss是: 58.06442174745467\n",
      "在第192步，我们获得了函数 f(rm) = 3.717109809389229 * rm + -0.4160055626476408, 此时loss是: 58.05746626474953\n",
      "在第193步，我们获得了函数 f(rm) = 3.7184047523293384 * rm + -0.42424284750547786, 此时loss是: 58.05051412684349\n",
      "在第194步，我们获得了函数 f(rm) = 3.7196993838715877 * rm + -0.43247815152477953, 此时loss是: 58.04356533212812\n",
      "在第195步，我们获得了函数 f(rm) = 3.7209937040908594 * rm + -0.4407114751818826, 此时loss是: 58.03661987899568\n",
      "在第196步，我们获得了函数 f(rm) = 3.7222877130620184 * rm + -0.4489428189530092, 此时loss是: 58.02967776583926\n",
      "在第197步，我们获得了函数 f(rm) = 3.7235814108599112 * rm + -0.45717218331426696, 此时loss是: 58.0227389910528\n",
      "在第198步，我们获得了函数 f(rm) = 3.724874797559366 * rm + -0.46539956874164917, 此时loss是: 58.01580355303081\n",
      "在第199步，我们获得了函数 f(rm) = 3.7261678732351937 * rm + -0.4736249757110345, 此时loss是: 58.00887145016871\n",
      "在第200步，我们获得了函数 f(rm) = 3.7274606379621864 * rm + -0.4818484046981873, 此时loss是: 58.00194268086273\n",
      "在第201步，我们获得了函数 f(rm) = 3.728753091815119 * rm + -0.4900698561787572, 此时loss是: 57.9950172435097\n",
      "在第202步，我们获得了函数 f(rm) = 3.7300452348687476 * rm + -0.4982893306282798, 此时loss是: 57.98809513650744\n",
      "在第203步，我们获得了函数 f(rm) = 3.731337067197812 * rm + -0.5065068285221762, 此时loss是: 57.98117635825435\n",
      "在第204步，我们获得了函数 f(rm) = 3.732628588877032 * rm + -0.5147223503357533, 此时loss是: 57.974260907149734\n",
      "在第205步，我们获得了函数 f(rm) = 3.73391979998111 * rm + -0.5229358965442037, 此时loss是: 57.96734878159349\n",
      "在第206步，我们获得了函数 f(rm) = 3.735210700584732 * rm + -0.5311474676226053, 此时loss是: 57.96043997998657\n",
      "在第207步，我们获得了函数 f(rm) = 3.736501290762563 * rm + -0.5393570640459225, 此时loss是: 57.95353450073045\n",
      "在第208步，我们获得了函数 f(rm) = 3.7377915705892524 * rm + -0.5475646862890048, 此时loss是: 57.946632342227474\n",
      "在第209步，我们获得了函数 f(rm) = 3.7390815401394315 * rm + -0.5557703348265878, 此时loss是: 57.93973350288073\n",
      "在第210步，我们获得了函数 f(rm) = 3.7403711994877127 * rm + -0.563974010133293, 此时loss是: 57.932837981093975\n",
      "在第211步，我们获得了函数 f(rm) = 3.741660548708692 * rm + -0.5721757126836277, 此时loss是: 57.92594577527204\n",
      "在第212步，我们获得了函数 f(rm) = 3.7429495878769448 * rm + -0.5803754429519851, 此时loss是: 57.919056883820204\n",
      "在第213步，我们获得了函数 f(rm) = 3.7442383170670315 * rm + -0.5885732014126442, 此时loss是: 57.91217130514457\n",
      "在第214步，我们获得了函数 f(rm) = 3.7455267363534923 * rm + -0.5967689885397703, 此时loss是: 57.90528903765224\n",
      "在第215步，我们获得了函数 f(rm) = 3.7468148458108512 * rm + -0.6049628048074143, 此时loss是: 57.89841007975082\n",
      "在第216步，我们获得了函数 f(rm) = 3.7481026455136126 * rm + -0.6131546506895131, 此时loss是: 57.89153442984873\n",
      "在第217步，我们获得了函数 f(rm) = 3.749390135536265 * rm + -0.6213445266598899, 此时loss是: 57.884662086355185\n",
      "在第218步，我们获得了函数 f(rm) = 3.7506773159532774 * rm + -0.6295324331922538, 此时loss是: 57.87779304768029\n",
      "在第219步，我们获得了函数 f(rm) = 3.751964186839101 * rm + -0.6377183707602001, 此时loss是: 57.87092731223474\n",
      "在第220步，我们获得了函数 f(rm) = 3.7532507482681705 * rm + -0.64590233983721, 此时loss是: 57.86406487843001\n",
      "在第221步，我们获得了函数 f(rm) = 3.7545370003149006 * rm + -0.6540843408966511, 此时loss是: 57.857205744678474\n",
      "在第222步，我们获得了函数 f(rm) = 3.7558229430536896 * rm + -0.6622643744117771, 此时loss是: 57.85034990939309\n",
      "在第223步，我们获得了函数 f(rm) = 3.7571085765589167 * rm + -0.6704424408557277, 此时loss是: 57.843497370987706\n",
      "在第224步，我们获得了函数 f(rm) = 3.758393900904945 * rm + -0.6786185407015289, 此时loss是: 57.83664812787692\n",
      "在第225步，我们获得了函数 f(rm) = 3.759678916166118 * rm + -0.6867926744220931, 此时loss是: 57.829802178476086\n",
      "在第226步，我们获得了函数 f(rm) = 3.7609636224167633 * rm + -0.6949648424902188, 此时loss是: 57.82295952120129\n",
      "在第227步，我们获得了函数 f(rm) = 3.7622480197311883 * rm + -0.7031350453785911, 此时loss是: 57.816120154469324\n",
      "在第228步，我们获得了函数 f(rm) = 3.7635321081836834 * rm + -0.711303283559781, 此时loss是: 57.80928407669786\n",
      "在第229步，我们获得了函数 f(rm) = 3.7648158878485223 * rm + -0.7194695575062462, 此时loss是: 57.802451286305285\n",
      "在第230步，我们获得了函数 f(rm) = 3.766099358799959 * rm + -0.7276338676903306, 此时loss是: 57.79562178171073\n",
      "在第231步，我们获得了函数 f(rm) = 3.7673825211122303 * rm + -0.7357962145842647, 此时loss是: 57.7887955613341\n",
      "在第232步，我们获得了函数 f(rm) = 3.7686653748595567 * rm + -0.7439565986601652, 此时loss是: 57.781972623596054\n",
      "在第233步，我们获得了函数 f(rm) = 3.769947920116138 * rm + -0.7521150203900354, 此时loss是: 57.775152966918085\n",
      "在第234步，我们获得了函数 f(rm) = 3.7712301569561584 * rm + -0.7602714802457652, 此时loss是: 57.768336589722175\n",
      "在第235步，我们获得了函数 f(rm) = 3.772512085453784 * rm + -0.7684259786991308, 此时loss是: 57.761523490431564\n",
      "在第236步，我们获得了函数 f(rm) = 3.7737937056831616 * rm + -0.7765785162217952, 此时loss是: 57.754713667469645\n",
      "在第237步，我们获得了函数 f(rm) = 3.775075017718422 * rm + -0.7847290932853077, 此时loss是: 57.74790711926114\n",
      "在第238步，我们获得了函数 f(rm) = 3.7763560216336765 * rm + -0.7928777103611045, 此时loss是: 57.741103844231084\n",
      "在第239步，我们获得了函数 f(rm) = 3.77763671750302 * rm + -0.8010243679205082, 此时loss是: 57.7343038408055\n",
      "在第240步，我们获得了函数 f(rm) = 3.7789171054005286 * rm + -0.8091690664347281, 此时loss是: 57.72750710741118\n",
      "在第241步，我们获得了函数 f(rm) = 3.7801971854002616 * rm + -0.8173118063748602, 此时loss是: 57.72071364247545\n",
      "在第242步，我们获得了函数 f(rm) = 3.7814769575762597 * rm + -0.8254525882118874, 此时loss是: 57.713923444426726\n",
      "在第243步，我们获得了函数 f(rm) = 3.782756422002546 * rm + -0.8335914124166791, 此时loss是: 57.70713651169402\n",
      "在第244步，我们获得了函数 f(rm) = 3.784035578753125 * rm + -0.8417282794599916, 此时loss是: 57.70035284270683\n",
      "在第245步，我们获得了函数 f(rm) = 3.7853144279019846 * rm + -0.8498631898124679, 此时loss是: 57.69357243589599\n",
      "在第246步，我们获得了函数 f(rm) = 3.786592969523095 * rm + -0.8579961439446379, 此时loss是: 57.68679528969247\n",
      "在第247步，我们获得了函数 f(rm) = 3.7878712036904076 * rm + -0.8661271423269182, 此时loss是: 57.68002140252849\n",
      "在第248步，我们获得了函数 f(rm) = 3.789149130477856 * rm + -0.8742561854296127, 此时loss是: 57.673250772836774\n",
      "在第249步，我们获得了函数 f(rm) = 3.7904267499593582 * rm + -0.8823832737229115, 此时loss是: 57.66648339905074\n",
      "在第250步，我们获得了函数 f(rm) = 3.791704062208811 * rm + -0.8905084076768923, 此时loss是: 57.659719279604836\n",
      "在第251步，我们获得了函数 f(rm) = 3.7929810673000963 * rm + -0.8986315877615194, 此时loss是: 57.65295841293406\n",
      "在第252步，我们获得了函数 f(rm) = 3.794257765307077 * rm + -0.9067528144466442, 此时loss是: 57.64620079747405\n",
      "在第253步，我们获得了函数 f(rm) = 3.7955341563035976 * rm + -0.9148720882020053, 此时loss是: 57.639446431661455\n",
      "在第254步，我们获得了函数 f(rm) = 3.7968102403634862 * rm + -0.9229894094972279, 此时loss是: 57.63269531393359\n",
      "在第255步，我们获得了函数 f(rm) = 3.7980860175605526 * rm + -0.9311047788018246, 此时loss是: 57.62594744272842\n",
      "在第256步，我们获得了函数 f(rm) = 3.7993614879685884 * rm + -0.9392181965851951, 此时loss是: 57.61920281648477\n",
      "在第257步，我们获得了函数 f(rm) = 3.800636651661368 * rm + -0.947329663316626, 此时loss是: 57.61246143364223\n",
      "在第258步，我们获得了函数 f(rm) = 3.801911508712648 * rm + -0.9554391794652912, 此时loss是: 57.60572329264099\n",
      "在第259步，我们获得了函数 f(rm) = 3.8031860591961677 * rm + -0.9635467455002518, 此时loss是: 57.59898839192212\n",
      "在第260步，我们获得了函数 f(rm) = 3.804460303185647 * rm + -0.9716523618904559, 此时loss是: 57.592256729927485\n",
      "在第261步，我们获得了函数 f(rm) = 3.80573424075479 * rm + -0.9797560291047391, 此时loss是: 57.585528305099544\n",
      "在第262步，我们获得了函数 f(rm) = 3.8070078719772815 * rm + -0.9878577476118242, 此时loss是: 57.57880311588164\n",
      "在第263步，我们获得了函数 f(rm) = 3.808281196926791 * rm + -0.9959575178803212, 此时loss是: 57.57208116071772\n",
      "在第264步，我们获得了函数 f(rm) = 3.8095542156769673 * rm + -1.0040553403787273, 此时loss是: 57.56536243805274\n",
      "在第265步，我们获得了函数 f(rm) = 3.810826928301443 * rm + -1.0121512155754275, 此时loss是: 57.558646946332054\n",
      "在第266步，我们获得了函数 f(rm) = 3.8120993348738335 * rm + -1.0202451439386935, 此时loss是: 57.55193468400207\n",
      "在第267步，我们获得了函数 f(rm) = 3.8133714354677353 * rm + -1.028337125936685, 此时loss是: 57.545225649509746\n",
      "在第268步，我们获得了函数 f(rm) = 3.8146432301567272 * rm + -1.0364271620374488, 此时loss是: 57.53851984130285\n",
      "在第269步，我们获得了函数 f(rm) = 3.815914719014372 * rm + -1.044515252708919, 此时loss是: 57.53181725782998\n",
      "在第270步，我们获得了函数 f(rm) = 3.817185902114213 * rm + -1.0526013984189175, 此时loss是: 57.525117897540305\n",
      "在第271步，我们获得了函数 f(rm) = 3.8184567795297766 * rm + -1.0606855996351539, 此时loss是: 57.518421758883946\n",
      "在第272步，我们获得了函数 f(rm) = 3.819727351334571 * rm + -1.0687678568252246, 此时loss是: 57.511728840311584\n",
      "在第273步，我们获得了函数 f(rm) = 3.820997617602088 * rm + -1.0768481704566142, 此时loss是: 57.50503914027478\n",
      "在第274步，我们获得了函数 f(rm) = 3.8222675784058 * rm + -1.0849265409966946, 此时loss是: 57.49835265722572\n",
      "在第275步，我们获得了函数 f(rm) = 3.8235372338191627 * rm + -1.0930029689127254, 此时loss是: 57.491669389617485\n",
      "在第276步，我们获得了函数 f(rm) = 3.8248065839156142 * rm + -1.1010774546718536, 此时loss是: 57.484989335903755\n",
      "在第277步，我们获得了函数 f(rm) = 3.8260756287685753 * rm + -1.1091499987411142, 此时loss是: 57.47831249453895\n",
      "在第278步，我们获得了函数 f(rm) = 3.8273443684514477 * rm + -1.1172206015874298, 此时loss是: 57.47163886397832\n",
      "在第279步，我们获得了函数 f(rm) = 3.828612803037617 * rm + -1.1252892636776106, 此时loss是: 57.46496844267789\n",
      "在第280步，我们获得了函数 f(rm) = 3.82988093260045 * rm + -1.1333559854783548, 此时loss是: 57.45830122909438\n",
      "在第281步，我们获得了函数 f(rm) = 3.8311487572132963 * rm + -1.141420767456248, 此时loss是: 57.451637221685274\n",
      "在第282步，我们获得了函数 f(rm) = 3.8324162769494885 * rm + -1.149483610077764, 此时loss是: 57.444976418908624\n",
      "在第283步，我们获得了函数 f(rm) = 3.8336834918823404 * rm + -1.157544513809264, 此时loss是: 57.438318819223504\n",
      "在第284步，我们获得了函数 f(rm) = 3.8349504020851493 * rm + -1.1656034791169971, 此时loss是: 57.43166442108947\n",
      "在第285步，我们获得了函数 f(rm) = 3.8362170076311934 * rm + -1.1736605064671009, 此时loss是: 57.425013222967024\n",
      "在第286步，我们获得了函数 f(rm) = 3.8374833085937357 * rm + -1.1817155963256, 此时loss是: 57.41836522331728\n",
      "在第287步，我们获得了函数 f(rm) = 3.8387493050460186 * rm + -1.189768749158408, 此时loss是: 57.41172042060215\n",
      "在第288步，我们获得了函数 f(rm) = 3.8400149970612687 * rm + -1.1978199654313253, 此时loss是: 57.40507881328434\n",
      "在第289步，我们获得了函数 f(rm) = 3.8412803847126953 * rm + -1.205869245610041, 此时loss是: 57.398440399827\n",
      "在第290步，我们获得了函数 f(rm) = 3.842545468073489 * rm + -1.2139165901601323, 此时loss是: 57.391805178694504\n",
      "在第291步，我们获得了函数 f(rm) = 3.8438102472168234 * rm + -1.221961999547064, 此时loss是: 57.385173148351605\n",
      "在第292步，我们获得了函数 f(rm) = 3.8450747222158546 * rm + -1.2300054742361892, 此时loss是: 57.37854430726389\n",
      "在第293步，我们获得了函数 f(rm) = 3.84633889314372 * rm + -1.238047014692749, 此时loss是: 57.37191865389767\n",
      "在第294步，我们获得了函数 f(rm) = 3.847602760073541 * rm + -1.2460866213818727, 此时loss是: 57.365296186720066\n",
      "在第295步，我们获得了函数 f(rm) = 3.8488663230784206 * rm + -1.2541242947685776, 此时loss是: 57.358676904198816\n",
      "在第296步，我们获得了函数 f(rm) = 3.8501295822314443 * rm + -1.2621600353177695, 此时loss是: 57.352060804802505\n",
      "在第297步，我们获得了函数 f(rm) = 3.85139253760568 * rm + -1.2701938434942421, 此时loss是: 57.34544788700038\n",
      "在第298步，我们获得了函数 f(rm) = 3.852655189274178 * rm + -1.2782257197626776, 此时loss是: 57.33883814926257\n",
      "在第299步，我们获得了函数 f(rm) = 3.853917537309971 * rm + -1.2862556645876462, 此时loss是: 57.33223159005964\n",
      "在第300步，我们获得了函数 f(rm) = 3.855179581786075 * rm + -1.2942836784336063, 此时loss是: 57.325628207863154\n",
      "在第301步，我们获得了函数 f(rm) = 3.856441322775487 * rm + -1.302309761764905, 此时loss是: 57.319028001145384\n",
      "在第302步，我们获得了函数 f(rm) = 3.8577027603511875 * rm + -1.3103339150457776, 此时loss是: 57.31243096837921\n",
      "在第303步，我们获得了函数 f(rm) = 3.858963894586138 * rm + -1.3183561387403475, 此时loss是: 57.30583710803842\n",
      "在第304步，我们获得了函数 f(rm) = 3.8602247255532847 * rm + -1.326376433312627, 此时loss是: 57.29924641859731\n",
      "在第305步，我们获得了函数 f(rm) = 3.8614852533255553 * rm + -1.334394799226516, 此时loss是: 57.29265889853111\n",
      "在第306步，我们获得了函数 f(rm) = 3.8627454779758583 * rm + -1.3424112369458037, 此时loss是: 57.28607454631572\n",
      "在第307步，我们获得了函数 f(rm) = 3.8640053995770876 * rm + -1.3504257469341674, 此时loss是: 57.279493360427765\n",
      "在第308步，我们获得了函数 f(rm) = 3.8652650182021175 * rm + -1.358438329655173, 此时loss是: 57.27291533934451\n",
      "在第309步，我们获得了函数 f(rm) = 3.866524333923805 * rm + -1.3664489855722746, 此时loss是: 57.26634048154415\n",
      "在第310步，我们获得了函数 f(rm) = 3.867783346814991 * rm + -1.374457715148815, 此时loss是: 57.259768785505415\n",
      "在第311步，我们获得了函数 f(rm) = 3.869042056948497 * rm + -1.3824645188480262, 此时loss是: 57.25320024970793\n",
      "在第312步，我们获得了函数 f(rm) = 3.870300464397128 * rm + -1.390469397133028, 此时loss是: 57.24663487263197\n",
      "在第313步，我们获得了函数 f(rm) = 3.8715585692336716 * rm + -1.398472350466829, 此时loss是: 57.24007265275851\n",
      "在第314步，我们获得了函数 f(rm) = 3.872816371530897 * rm + -1.4064733793123267, 此时loss是: 57.23351358856931\n",
      "在第315步，我们获得了函数 f(rm) = 3.874073871361557 * rm + -1.414472484132307, 此时loss是: 57.22695767854686\n",
      "在第316步，我们获得了函数 f(rm) = 3.875331068798386 * rm + -1.4224696653894449, 此时loss是: 57.22040492117431\n",
      "在第317步，我们获得了函数 f(rm) = 3.876587963914102 * rm + -1.4304649235463036, 此时loss是: 57.21385531493566\n",
      "在第318步，我们获得了函数 f(rm) = 3.877844556781404 * rm + -1.4384582590653356, 此时loss是: 57.20730885831554\n",
      "在第319步，我们获得了函数 f(rm) = 3.879100847472975 * rm + -1.446449672408882, 此时loss是: 57.20076554979926\n",
      "在第320步，我们获得了函数 f(rm) = 3.8803568360614804 * rm + -1.4544391640391727, 此时loss是: 57.19422538787315\n",
      "在第321步，我们获得了函数 f(rm) = 3.881612522619566 * rm + -1.4624267344183264, 此时loss是: 57.18768837102389\n",
      "在第322步，我们获得了函数 f(rm) = 3.8828679072198633 * rm + -1.4704123840083505, 此时loss是: 57.1811544977391\n",
      "在第323步，我们获得了函数 f(rm) = 3.884122989934984 * rm + -1.4783961132711418, 此时loss是: 57.17462376650703\n",
      "在第324步，我们获得了函数 f(rm) = 3.885377770837523 * rm + -1.4863779226684857, 此时loss是: 57.16809617581683\n",
      "在第325步，我们获得了函数 f(rm) = 3.886632250000058 * rm + -1.4943578126620565, 此时loss是: 57.16157172415805\n",
      "在第326步，我们获得了函数 f(rm) = 3.8878864274951495 * rm + -1.5023357837134175, 此时loss是: 57.155050410021374\n",
      "在第327步，我们获得了函数 f(rm) = 3.8891403033953393 * rm + -1.510311836284021, 此时loss是: 57.148532231897995\n",
      "在第328步，我们获得了函数 f(rm) = 3.8903938777731537 * rm + -1.5182859708352088, 此时loss是: 57.14201718827961\n",
      "在第329步，我们获得了函数 f(rm) = 3.8916471507011003 * rm + -1.526258187828211, 此时loss是: 57.135505277659185\n",
      "在第330步，我们获得了函数 f(rm) = 3.892900122251669 * rm + -1.5342284877241474, 此时loss是: 57.12899649852998\n",
      "在第331步，我们获得了函数 f(rm) = 3.8941527924973323 * rm + -1.5421968709840266, 此时loss是: 57.122490849386026\n",
      "在第332步，我们获得了函数 f(rm) = 3.895405161510546 * rm + -1.5501633380687465, 此时loss是: 57.11598832872227\n",
      "在第333步，我们获得了函数 f(rm) = 3.8966572293637483 * rm + -1.558127889439094, 此时loss是: 57.109488935034236\n",
      "在第334步，我们获得了函数 f(rm) = 3.8979089961293605 * rm + -1.5660905255557451, 此时loss是: 57.102992666818146\n",
      "在第335步，我们获得了函数 f(rm) = 3.899160461879784 * rm + -1.5740512468792653, 此时loss是: 57.09649952257104\n",
      "在第336步，我们获得了函数 f(rm) = 3.900411626687406 * rm + -1.5820100538701094, 此时loss是: 57.09000950079066\n",
      "在第337步，我们获得了函数 f(rm) = 3.901662490624595 * rm + -1.589966946988621, 此时loss是: 57.08352259997545\n",
      "在第338步，我们获得了函数 f(rm) = 3.902913053763702 * rm + -1.5979219266950335, 此时loss是: 57.07703881862453\n",
      "在第339步，我们获得了函数 f(rm) = 3.9041633161770597 * rm + -1.6058749934494694, 此时loss是: 57.07055815523786\n",
      "在第340步，我们获得了函数 f(rm) = 3.905413277936985 * rm + -1.6138261477119407, 此时loss是: 57.064080608315955\n",
      "在第341步，我们获得了函数 f(rm) = 3.9066629391157766 * rm + -1.6217753899423486, 此时loss是: 57.05760617636035\n",
      "在第342步，我们获得了函数 f(rm) = 3.9079122997857154 * rm + -1.6297227206004836, 此时loss是: 57.05113485787285\n",
      "在第343步，我们获得了函数 f(rm) = 3.9091613600190662 * rm + -1.637668140146026, 此时loss是: 57.04466665135638\n",
      "在第344步，我们获得了函数 f(rm) = 3.910410119888075 * rm + -1.6456116490385455, 此时loss是: 57.038201555314416\n",
      "在第345步，我们获得了函数 f(rm) = 3.9116585794649725 * rm + -1.653553247737501, 此时loss是: 57.031739568251155\n",
      "在第346步，我们获得了函数 f(rm) = 3.912906738821969 * rm + -1.661492936702241, 此时loss是: 57.025280688671465\n",
      "在第347步，我们获得了函数 f(rm) = 3.9141545980312595 * rm + -1.669430716392004, 此时loss是: 57.01882491508107\n",
      "在第348步，我们获得了函数 f(rm) = 3.9154021571650213 * rm + -1.6773665872659171, 此时loss是: 57.012372245986406\n",
      "在第349步，我们获得了函数 f(rm) = 3.916649416295414 * rm + -1.6853005497829978, 此时loss是: 57.0059226798945\n",
      "在第350步，我们获得了函数 f(rm) = 3.917896375494581 * rm + -1.693232604402153, 此时loss是: 56.9994762153131\n",
      "在第351步，我们获得了函数 f(rm) = 3.9191430348346463 * rm + -1.7011627515821794, 此时loss是: 56.993032850750744\n",
      "在第352步，我们获得了函数 f(rm) = 3.920389394387718 * rm + -1.709090991781763, 此时loss是: 56.98659258471675\n",
      "在第353步，我们获得了函数 f(rm) = 3.9216354542258878 * rm + -1.7170173254594796, 此时loss是: 56.98015541572103\n",
      "在第354步，我们获得了函数 f(rm) = 3.9228812144212273 * rm + -1.7249417530737952, 此时loss是: 56.97372134227432\n",
      "在第355步，我们获得了函数 f(rm) = 3.9241266750457924 * rm + -1.7328642750830647, 此时loss是: 56.967290362887866\n",
      "在第356步，我们获得了函数 f(rm) = 3.9253718361716223 * rm + -1.7407848919455338, 此时loss是: 56.96086247607391\n",
      "在第357步，我们获得了函数 f(rm) = 3.9266166978707373 * rm + -1.7487036041193371, 此时loss是: 56.954437680345286\n",
      "在第358步，我们获得了函数 f(rm) = 3.9278612602151424 * rm + -1.7566204120624995, 此时loss是: 56.94801597421543\n",
      "在第359步，我们获得了函数 f(rm) = 3.929105523276823 * rm + -1.7645353162329356, 此时loss是: 56.94159735619868\n",
      "在第360步，我们获得了函数 f(rm) = 3.9303494871277493 * rm + -1.77244831708845, 此时loss是: 56.93518182480992\n",
      "在第361步，我们获得了函数 f(rm) = 3.9315931518398717 * rm + -1.780359415086737, 此时loss是: 56.92876937856489\n",
      "在第362步，我们获得了函数 f(rm) = 3.9328365174851254 * rm + -1.7882686106853813, 此时loss是: 56.92236001597997\n",
      "在第363步，我们获得了函数 f(rm) = 3.934079584135429 * rm + -1.7961759043418568, 此时loss是: 56.91595373557233\n",
      "在第364步，我们获得了函数 f(rm) = 3.935322351862681 * rm + -1.8040812965135282, 此时loss是: 56.909550535859715\n",
      "在第365步，我们获得了函数 f(rm) = 3.9365648207387642 * rm + -1.8119847876576498, 此时loss是: 56.90315041536061\n",
      "在第366步，我们获得了函数 f(rm) = 3.937806990835545 * rm + -1.819886378231366, 此时loss是: 56.896753372594375\n",
      "在第367步，我们获得了函数 f(rm) = 3.9390488622248707 * rm + -1.8277860686917111, 此时loss是: 56.89035940608091\n",
      "在第368步，我们获得了函数 f(rm) = 3.9402904349785723 * rm + -1.83568385949561, 此时loss是: 56.88396851434096\n",
      "在第369步，我们获得了函数 f(rm) = 3.9415317091684634 * rm + -1.843579751099877, 此时loss是: 56.877580695895844\n",
      "在第370步，我们获得了函数 f(rm) = 3.9427726848663402 * rm + -1.8514737439612172, 此时loss是: 56.87119594926762\n",
      "在第371步，我们获得了函数 f(rm) = 3.9440133621439823 * rm + -1.8593658385362255, 此时loss是: 56.864814272979146\n",
      "在第372步，我们获得了函数 f(rm) = 3.9452537410731505 * rm + -1.8672560352813872, 此时loss是: 56.85843566555391\n",
      "在第373步，我们获得了函数 f(rm) = 3.9464938217255905 * rm + -1.8751443346530774, 此时loss是: 56.852060125516125\n",
      "在第374步，我们获得了函数 f(rm) = 3.9477336041730284 * rm + -1.883030737107562, 此时loss是: 56.845687651390826\n",
      "在第375步，我们获得了函数 f(rm) = 3.948973088487175 * rm + -1.8909152431009972, 此时loss是: 56.83931824170355\n",
      "在第376步，我们获得了函数 f(rm) = 3.9502122747397235 * rm + -1.898797853089429, 此时loss是: 56.83295189498065\n",
      "在第377步，我们获得了函数 f(rm) = 3.951451163002349 * rm + -1.906678567528794, 此时loss是: 56.82658860974928\n",
      "在第378步，我们获得了函数 f(rm) = 3.9526897533467094 * rm + -1.9145573868749195, 此时loss是: 56.82022838453713\n",
      "在第379步，我们获得了函数 f(rm) = 3.953928045844446 * rm + -1.9224343115835227, 此时loss是: 56.81387121787265\n",
      "在第380步，我们获得了函数 f(rm) = 3.9551660405671822 * rm + -1.9303093421102113, 此时loss是: 56.807517108285126\n",
      "在第381步，我们获得了函数 f(rm) = 3.9564037375865255 * rm + -1.9381824789104836, 此时loss是: 56.80116605430433\n",
      "在第382步，我们获得了函数 f(rm) = 3.957641136974065 * rm + -1.946053722439728, 此时loss是: 56.79481805446098\n",
      "在第383步，我们获得了函数 f(rm) = 3.9588782388013732 * rm + -1.953923073153224, 此时loss是: 56.788473107286336\n",
      "在第384步，我们获得了函数 f(rm) = 3.9601150431400045 * rm + -1.9617905315061412, 此时loss是: 56.78213121131234\n",
      "在第385步，我们获得了函数 f(rm) = 3.961351550061497 * rm + -1.9696560979535398, 此时loss是: 56.77579236507182\n",
      "在第386步，我们获得了函数 f(rm) = 3.962587759637371 * rm + -1.9775197729503706, 此时loss是: 56.769456567098125\n",
      "在第387步，我们获得了函数 f(rm) = 3.9638236719391298 * rm + -1.985381556951475, 此时loss是: 56.763123815925454\n",
      "在第388步，我们获得了函数 f(rm) = 3.96505928703826 * rm + -1.9932414504115852, 此时loss是: 56.75679411008854\n",
      "在第389步，我们获得了函数 f(rm) = 3.966294605006231 * rm + -2.0010994537853235, 此时loss是: 56.75046744812305\n",
      "在第390步，我们获得了函数 f(rm) = 3.967529625914493 * rm + -2.0089555675272037, 此时loss是: 56.74414382856507\n",
      "在第391步，我们获得了函数 f(rm) = 3.9687643498344825 * rm + -2.0168097920916295, 此时loss是: 56.73782324995171\n",
      "在第392步，我们获得了函数 f(rm) = 3.9699987768376155 * rm + -2.0246621279328956, 此时loss是: 56.7315057108205\n",
      "在第393步，我们获得了函数 f(rm) = 3.971232906995293 * rm + -2.0325125755051876, 此时loss是: 56.725191209709784\n",
      "在第394步，我们获得了函数 f(rm) = 3.9724667403788985 * rm + -2.0403611352625823, 此时loss是: 56.71887974515875\n",
      "在第395步，我们获得了函数 f(rm) = 3.973700277059797 * rm + -2.0482078076590464, 此时loss是: 56.71257131570709\n",
      "在第396步，我们获得了函数 f(rm) = 3.974933517109337 * rm + -2.0560525931484377, 此时loss是: 56.70626591989522\n",
      "在第397步，我们获得了函数 f(rm) = 3.976166460598852 * rm + -2.063895492184505, 此时loss是: 56.69996355626431\n",
      "在第398步，我们获得了函数 f(rm) = 3.977399107599654 * rm + -2.0717365052208887, 此时loss是: 56.693664223356286\n",
      "在第399步，我们获得了函数 f(rm) = 3.9786314581830426 * rm + -2.079575632711119, 此时loss是: 56.687367919713715\n",
      "在第400步，我们获得了函数 f(rm) = 3.9798635124202972 * rm + -2.0874128751086167, 此时loss是: 56.6810746438798\n",
      "在第401步，我们获得了函数 f(rm) = 3.981095270382679 * rm + -2.0952482328666955, 此时loss是: 56.67478439439848\n",
      "在第402步，我们获得了函数 f(rm) = 3.9823267321414364 * rm + -2.1030817064385583, 此时loss是: 56.6684971698145\n",
      "在第403步，我们获得了函数 f(rm) = 3.9835578977677972 * rm + -2.1109132962772996, 此时loss是: 56.66221296867318\n",
      "在第404步，我们获得了函数 f(rm) = 3.9847887673329727 * rm + -2.1187430028359056, 此时loss是: 56.65593178952069\n",
      "在第405步，我们获得了函数 f(rm) = 3.9860193409081583 * rm + -2.126570826567252, 此时loss是: 56.649653630903664\n",
      "在第406步，我们获得了函数 f(rm) = 3.9872496185645305 * rm + -2.134396767924107, 此时loss是: 56.643378491369646\n",
      "在第407步，我们获得了函数 f(rm) = 3.9884796003732492 * rm + -2.1422208273591297, 此时loss是: 56.63710636946673\n",
      "在第408步，我们获得了函数 f(rm) = 3.989709286405459 * rm + -2.1500430053248696, 此时loss是: 56.630837263743864\n",
      "在第409步，我们获得了函数 f(rm) = 3.9909386767322848 * rm + -2.157863302273768, 此时loss是: 56.62457117275054\n",
      "在第410步，我们获得了函数 f(rm) = 3.9921677714248363 * rm + -2.1656817186581576, 此时loss是: 56.61830809503709\n",
      "在第411步，我们获得了函数 f(rm) = 3.9933965705542045 * rm + -2.1734982549302617, 此时loss是: 56.61204802915428\n",
      "在第412步，我们获得了函数 f(rm) = 3.994625074191465 * rm + -2.181312911542195, 此时loss是: 56.605790973654\n",
      "在第413步，我们获得了函数 f(rm) = 3.9958532824076753 * rm + -2.1891256889459645, 此时loss是: 56.599536927088465\n",
      "在第414步，我们获得了函数 f(rm) = 3.9970811952738745 * rm + -2.1969365875934668, 此时loss是: 56.593285888010776\n",
      "在第415步，我们获得了函数 f(rm) = 3.998308812861088 * rm + -2.204745607936491, 此时loss是: 56.58703785497459\n",
      "在第416步，我们获得了函数 f(rm) = 3.999536135240322 * rm + -2.212552750426717, 此时loss是: 56.58079282653439\n",
      "在第417步，我们获得了函数 f(rm) = 4.000763162482565 * rm + -2.2203580155157163, 此时loss是: 56.57455080124533\n",
      "在第418步，我们获得了函数 f(rm) = 4.00198989465879 * rm + -2.228161403654952, 此时loss是: 56.568311777663254\n",
      "在第419步，我们获得了函数 f(rm) = 4.003216331839951 * rm + -2.235962915295779, 此时loss是: 56.562075754344576\n",
      "在第420步，我们获得了函数 f(rm) = 4.0044424740969875 * rm + -2.243762550889442, 此时loss是: 56.55584272984665\n",
      "在第421步，我们获得了函数 f(rm) = 4.00566832150082 * rm + -2.2515603108870788, 此时loss是: 56.549612702727245\n",
      "在第422步，我们获得了函数 f(rm) = 4.006893874122352 * rm + -2.259356195739718, 此时loss是: 56.543385671545025\n",
      "在第423步，我们获得了函数 f(rm) = 4.008119132032471 * rm + -2.2671502058982806, 此时loss是: 56.53716163485934\n",
      "在第424步，我们获得了函数 f(rm) = 4.009344095302048 * rm + -2.274942341813578, 此时loss是: 56.53094059123007\n",
      "在第425步，我们获得了函数 f(rm) = 4.010568764001933 * rm + -2.282732603936314, 此时loss是: 56.52472253921794\n",
      "在第426步，我们获得了函数 f(rm) = 4.011793138202965 * rm + -2.2905209927170835, 此时loss是: 56.51850747738434\n",
      "在第427步，我们获得了函数 f(rm) = 4.013017217975961 * rm + -2.298307508606374, 此时loss是: 56.512295404291336\n",
      "在第428步，我们获得了函数 f(rm) = 4.0142410033917235 * rm + -2.3060921520545627, 此时loss是: 56.50608631850161\n",
      "在第429步，我们获得了函数 f(rm) = 4.015464494521037 * rm + -2.313874923511921, 此时loss是: 56.499880218578724\n",
      "在第430步，我们获得了函数 f(rm) = 4.016687691434669 * rm + -2.32165582342861, 此时loss是: 56.493677103086746\n",
      "在第431步，我们获得了函数 f(rm) = 4.017910594203371 * rm + -2.3294348522546833, 此时loss是: 56.487476970590464\n",
      "在第432步，我们获得了函数 f(rm) = 4.019133202897875 * rm + -2.3372120104400866, 此时loss是: 56.48127981965545\n",
      "在第433步，我们获得了函数 f(rm) = 4.020355517588899 * rm + -2.344987298434657, 此时loss是: 56.47508564884785\n",
      "在第434步，我们获得了函数 f(rm) = 4.021577538347143 * rm + -2.3527607166881235, 此时loss是: 56.46889445673471\n",
      "在第435步，我们获得了函数 f(rm) = 4.022799265243288 * rm + -2.360532265650107, 此时loss是: 56.462706241883446\n",
      "在第436步，我们获得了函数 f(rm) = 4.024020698348002 * rm + -2.36830194577012, 此时loss是: 56.45652100286242\n",
      "在第437步，我们获得了函数 f(rm) = 4.025241837731932 * rm + -2.3760697574975675, 此时loss是: 56.450338738240646\n",
      "在第438步，我们获得了函数 f(rm) = 4.02646268346571 * rm + -2.3838357012817464, 此时loss是: 56.444159446587584\n",
      "在第439步，我们获得了函数 f(rm) = 4.027683235619952 * rm + -2.3915997775718445, 此时loss是: 56.43798312647379\n",
      "在第440步，我们获得了函数 f(rm) = 4.028903494265253 * rm + -2.3993619868169427, 此时loss是: 56.43180977647018\n",
      "在第441步，我们获得了函数 f(rm) = 4.030123459472197 * rm + -2.4071223294660133, 此时loss是: 56.42563939514843\n",
      "在第442步，我们获得了函数 f(rm) = 4.031343131311346 * rm + -2.4148808059679214, 此时loss是: 56.41947198108102\n",
      "在第443步，我们获得了函数 f(rm) = 4.032562509853247 * rm + -2.422637416771423, 此时loss是: 56.413307532841046\n",
      "在第444步，我们获得了函数 f(rm) = 4.0337815951684295 * rm + -2.4303921623251674, 此时loss是: 56.407146049002186\n",
      "在第445步，我们获得了函数 f(rm) = 4.035000387327407 * rm + -2.438145043077695, 此时loss是: 56.400987528139005\n",
      "在第446步，我们获得了函数 f(rm) = 4.036218886400675 * rm + -2.4458960594774393, 此时loss是: 56.39483196882663\n",
      "在第447步，我们获得了函数 f(rm) = 4.037437092458712 * rm + -2.453645211972725, 此时loss是: 56.38867936964078\n",
      "在第448步，我们获得了函数 f(rm) = 4.038655005571982 * rm + -2.4613925010117694, 此时loss是: 56.38252972915804\n",
      "在第449步，我们获得了函数 f(rm) = 4.039872625810929 * rm + -2.469137927042682, 此时loss是: 56.37638304595561\n",
      "在第450步，我们获得了函数 f(rm) = 4.04108995324598 * rm + -2.4768814905134646, 此时loss是: 56.37023931861151\n",
      "在第451步，我们获得了函数 f(rm) = 4.042306987947548 * rm + -2.4846231918720116, 此时loss是: 56.364098545704095\n",
      "在第452步，我们获得了函数 f(rm) = 4.043523729986026 * rm + -2.492363031566109, 此时loss是: 56.35796072581274\n",
      "在第453步，我们获得了函数 f(rm) = 4.044740179431791 * rm + -2.5001010100434353, 此时loss是: 56.35182585751729\n",
      "在第454步，我们获得了函数 f(rm) = 4.045956336355206 * rm + -2.507837127751562, 此时loss是: 56.34569393939841\n",
      "在第455步，我们获得了函数 f(rm) = 4.047172200826612 * rm + -2.515571385137952, 此时loss是: 56.33956497003739\n",
      "在第456步，我们获得了函数 f(rm) = 4.048387772916336 * rm + -2.523303782649962, 此时loss是: 56.33343894801629\n",
      "在第457步，我们获得了函数 f(rm) = 4.049603052694689 * rm + -2.531034320734839, 此时loss是: 56.32731587191768\n",
      "在第458步，我们获得了函数 f(rm) = 4.050818040231962 * rm + -2.5387629998397245, 此时loss是: 56.32119574032491\n",
      "在第459步，我们获得了函数 f(rm) = 4.052032735598432 * rm + -2.5464898204116513, 此时loss是: 56.31507855182199\n",
      "在第460步，我们获得了函数 f(rm) = 4.053247138864357 * rm + -2.554214782897545, 此时loss是: 56.30896430499374\n",
      "在第461步，我们获得了函数 f(rm) = 4.054461250099981 * rm + -2.561937887744224, 此时loss是: 56.30285299842537\n",
      "在第462步，我们获得了函数 f(rm) = 4.0556750693755275 * rm + -2.5696591353983984, 此时loss是: 56.296744630703124\n",
      "在第463步，我们获得了函数 f(rm) = 4.056888596761205 * rm + -2.577378526306672, 此时loss是: 56.2906392004137\n",
      "在第464步，我们获得了函数 f(rm) = 4.058101832327205 * rm + -2.5850960609155407, 此时loss是: 56.28453670614447\n",
      "在第465步，我们获得了函数 f(rm) = 4.059314776143703 * rm + -2.592811739671393, 此时loss是: 56.27843714648355\n",
      "在第466步，我们获得了函数 f(rm) = 4.060527428280855 * rm + -2.6005255630205095, 此时loss是: 56.27234052001976\n",
      "在第467步，我们获得了函数 f(rm) = 4.061739788808803 * rm + -2.6082375314090647, 此时loss是: 56.26624682534262\n",
      "在第468步，我们获得了函数 f(rm) = 4.062951857797671 * rm + -2.615947645283125, 此时loss是: 56.26015606104213\n",
      "在第469步，我们获得了函数 f(rm) = 4.064163635317565 * rm + -2.6236559050886497, 此时loss是: 56.2540682257092\n",
      "在第470步，我们获得了函数 f(rm) = 4.065375121438576 * rm + -2.631362311271491, 此时loss是: 56.24798331793528\n",
      "在第471步，我们获得了函数 f(rm) = 4.066586316230778 * rm + -2.6390668642773933, 此时loss是: 56.24190133631263\n",
      "在第472步，我们获得了函数 f(rm) = 4.067797219764226 * rm + -2.646769564551995, 此时loss是: 56.23582227943406\n",
      "在第473步，我们获得了函数 f(rm) = 4.06900783210896 * rm + -2.654470412540826, 此时loss是: 56.22974614589303\n",
      "在第474步，我们获得了函数 f(rm) = 4.070218153335004 * rm + -2.6621694086893095, 此时loss是: 56.223672934283805\n",
      "在第475步，我们获得了函数 f(rm) = 4.071428183512363 * rm + -2.669866553442762, 此时loss是: 56.21760264320142\n",
      "在第476步，我们获得了函数 f(rm) = 4.072637922711026 * rm + -2.677561847246393, 此时loss是: 56.21153527124115\n",
      "在第477步，我们获得了函数 f(rm) = 4.073847371000965 * rm + -2.685255290545304, 此时loss是: 56.20547081699938\n",
      "在第478步，我们获得了函数 f(rm) = 4.075056528452137 * rm + -2.6929468837844905, 此时loss是: 56.19940927907305\n",
      "在第479步，我们获得了函数 f(rm) = 4.076265395134479 * rm + -2.7006366274088407, 此时loss是: 56.19335065605963\n",
      "在第480步，我们获得了函数 f(rm) = 4.077473971117914 * rm + -2.708324521863135, 此时loss是: 56.187294946557515\n",
      "在第481步，我们获得了函数 f(rm) = 4.078682256472347 * rm + -2.7160105675920483, 此时loss是: 56.18124214916542\n",
      "在第482步，我们获得了函数 f(rm) = 4.079890251267665 * rm + -2.723694765040147, 此时loss是: 56.175192262483236\n",
      "在第483步，我们获得了函数 f(rm) = 4.081097955573741 * rm + -2.7313771146518917, 此时loss是: 56.16914528511104\n",
      "在第484步，我们获得了函数 f(rm) = 4.082305369460427 * rm + -2.739057616871636, 此时loss是: 56.16310121564983\n",
      "在第485步，我们获得了函数 f(rm) = 4.083512492997564 * rm + -2.7467362721436257, 此时loss是: 56.157060052701176\n",
      "在第486步，我们获得了函数 f(rm) = 4.084719326254972 * rm + -2.7544130809120015, 此时loss是: 56.151021794867525\n",
      "在第487步，我们获得了函数 f(rm) = 4.0859258693024545 * rm + -2.7620880436207957, 此时loss是: 56.144986440751765\n",
      "在第488步，我们获得了函数 f(rm) = 4.087132122209799 * rm + -2.7697611607139345, 此时loss是: 56.13895398895754\n",
      "在第489步，我们获得了函数 f(rm) = 4.088338085046777 * rm + -2.7774324326352375, 此时loss是: 56.13292443808909\n",
      "在第490步，我们获得了函数 f(rm) = 4.089543757883142 * rm + -2.7851018598284174, 此时loss是: 56.12689778675149\n",
      "在第491步，我们获得了函数 f(rm) = 4.090749140788629 * rm + -2.7927694427370797, 此时loss是: 56.12087403355037\n",
      "在第492步，我们获得了函数 f(rm) = 4.091954233832962 * rm + -2.800435181804724, 此时loss是: 56.114853177092016\n",
      "在第493步，我们获得了函数 f(rm) = 4.093159037085843 * rm + -2.808099077474743, 此时loss是: 56.10883521598348\n",
      "在第494步，我们获得了函数 f(rm) = 4.094363550616958 * rm + -2.815761130190422, 此时loss是: 56.102820148832436\n",
      "在第495步，我们获得了函数 f(rm) = 4.0955677744959775 * rm + -2.8234213403949413, 此时loss是: 56.096807974247106\n",
      "在第496步，我们获得了函数 f(rm) = 4.096771708792556 * rm + -2.8310797085313735, 此时loss是: 56.09079869083664\n",
      "在第497步，我们获得了函数 f(rm) = 4.097975353576328 * rm + -2.838736235042685, 此时loss是: 56.08479229721068\n",
      "在第498步，我们获得了函数 f(rm) = 4.099178708916915 * rm + -2.846390920371735, 此时loss是: 56.07878879197943\n",
      "在第499步，我们获得了函数 f(rm) = 4.100381774883918 * rm + -2.854043764961277, 此时loss是: 56.07278817375406\n",
      "在第500步，我们获得了函数 f(rm) = 4.101584551546926 * rm + -2.861694769253958, 此时loss是: 56.0667904411462\n",
      "在第501步，我们获得了函数 f(rm) = 4.1027870389755074 * rm + -2.869343933692318, 此时loss是: 56.06079559276813\n",
      "在第502步，我们获得了函数 f(rm) = 4.103989237239214 * rm + -2.876991258718791, 此时loss是: 56.054803627232964\n",
      "在第503步，我们获得了函数 f(rm) = 4.105191146407584 * rm + -2.884636744775705, 此时loss是: 56.04881454315435\n",
      "在第504步，我们获得了函数 f(rm) = 4.106392766550135 * rm + -2.892280392305281, 此时loss是: 56.04282833914651\n",
      "在第505步，我们获得了函数 f(rm) = 4.107594097736371 * rm + -2.8999222017496336, 此时loss是: 56.03684501382466\n",
      "在第506步，我们获得了函数 f(rm) = 4.1087951400357765 * rm + -2.9075621735507715, 此时loss是: 56.03086456580428\n",
      "在第507步，我们获得了函数 f(rm) = 4.109995893517822 * rm + -2.9152003081505966, 此时loss是: 56.02488699370196\n",
      "在第508步，我们获得了函数 f(rm) = 4.111196358251959 * rm + -2.9228366059909052, 此时loss是: 56.018912296134474\n",
      "在第509步，我们获得了函数 f(rm) = 4.112396534307625 * rm + -2.930471067513387, 此时loss是: 56.01294047171958\n",
      "在第510步，我们获得了函数 f(rm) = 4.113596421754238 * rm + -2.9381036931596256, 此时loss是: 56.00697151907562\n",
      "在第511步，我们获得了函数 f(rm) = 4.114796020661201 * rm + -2.945734483371098, 此时loss是: 56.001005436821664\n",
      "在第512步，我们获得了函数 f(rm) = 4.115995331097899 * rm + -2.9533634385891756, 此时loss是: 55.99504222357732\n",
      "在第513步，我们获得了函数 f(rm) = 4.117194353133702 * rm + -2.9609905592551233, 此时loss是: 55.98908187796286\n",
      "在第514步，我们获得了函数 f(rm) = 4.118393086837962 * rm + -2.9686158458101, 此时loss是: 55.98312439859935\n",
      "在第515步，我们获得了函数 f(rm) = 4.119591532280014 * rm + -2.9762392986951585, 此时loss是: 55.97716978410839\n",
      "在第516步，我们获得了函数 f(rm) = 4.120789689529178 * rm + -2.9838609183512452, 此时loss是: 55.9712180331124\n",
      "在第517步，我们获得了函数 f(rm) = 4.121987558654756 * rm + -2.9914807052192014, 此时loss是: 55.96526914423427\n",
      "在第518步，我们获得了函数 f(rm) = 4.123185139726035 * rm + -2.9990986597397615, 此时loss是: 55.95932311609769\n",
      "在第519步，我们获得了函数 f(rm) = 4.124382432812282 * rm + -3.0067147823535545, 此时loss是: 55.95337994732703\n",
      "在第520步，我们获得了函数 f(rm) = 4.125579437982751 * rm + -3.014329073501103, 此时loss是: 55.94743963654709\n",
      "在第521步，我们获得了函数 f(rm) = 4.126776155306676 * rm + -3.0219415336228237, 此时loss是: 55.941502182383665\n",
      "在第522步，我们获得了函数 f(rm) = 4.127972584853279 * rm + -3.029552163159028, 此时loss是: 55.93556758346294\n",
      "在第523步，我们获得了函数 f(rm) = 4.12916872669176 * rm + -3.0371609625499203, 此时loss是: 55.92963583841194\n",
      "在第524步，我们获得了函数 f(rm) = 4.130364580891306 * rm + -3.0447679322356005, 此时loss是: 55.92370694585819\n",
      "在第525步，我们获得了函数 f(rm) = 4.131560147521085 * rm + -3.0523730726560614, 此时loss是: 55.917780904430025\n",
      "在第526步，我们获得了函数 f(rm) = 4.132755426650251 * rm + -3.0599763842511907, 此时loss是: 55.91185771275642\n",
      "在第527步，我们获得了函数 f(rm) = 4.133950418347938 * rm + -3.0675778674607703, 此时loss是: 55.905937369466926\n",
      "在第528步，我们获得了函数 f(rm) = 4.135145122683268 * rm + -3.0751775227244758, 此时loss是: 55.90001987319175\n",
      "在第529步，我们获得了函数 f(rm) = 4.136339539725341 * rm + -3.082775350481878, 此时loss是: 55.894105222561805\n",
      "在第530步，我们获得了函数 f(rm) = 4.137533669543245 * rm + -3.090371351172441, 此时loss是: 55.88819341620866\n",
      "在第531步，我们获得了函数 f(rm) = 4.1387275122060485 * rm + -3.0979655252355243, 此时loss是: 55.882284452764615\n",
      "在第532步，我们获得了函数 f(rm) = 4.139921067782804 * rm + -3.1055578731103806, 此时loss是: 55.87637833086254\n",
      "在第533步，我们获得了函数 f(rm) = 4.141114336342549 * rm + -3.113148395236158, 此时loss是: 55.870475049135884\n",
      "在第534步，我们获得了函数 f(rm) = 4.142307317954302 * rm + -3.1207370920518978, 此时loss是: 55.864574606218895\n",
      "在第535步，我们获得了函数 f(rm) = 4.143500012687066 * rm + -3.128323963996537, 此时loss是: 55.858677000746454\n",
      "在第536步，我们获得了函数 f(rm) = 4.144692420609829 * rm + -3.135909011508906, 此时loss是: 55.85278223135403\n",
      "在第537步，我们获得了函数 f(rm) = 4.14588454179156 * rm + -3.143492235027731, 此时loss是: 55.846890296677806\n",
      "在第538步，我们获得了函数 f(rm) = 4.147076376301211 * rm + -3.151073634991631, 此时loss是: 55.84100119535462\n",
      "在第539步，我们获得了函数 f(rm) = 4.14826792420772 * rm + -3.158653211839121, 此时loss是: 55.83511492602194\n",
      "在第540步，我们获得了函数 f(rm) = 4.149459185580006 * rm + -3.1662309660086096, 此时loss是: 55.82923148731787\n",
      "在第541步，我们获得了函数 f(rm) = 4.150650160486974 * rm + -3.1738068979384004, 此时loss是: 55.82335087788124\n",
      "在第542步，我们获得了函数 f(rm) = 4.1518408489975105 * rm + -3.1813810080666913, 此时loss是: 55.81747309635142\n",
      "在第543步，我们获得了函数 f(rm) = 4.153031251180485 * rm + -3.188953296831575, 此时loss是: 55.81159814136867\n",
      "在第544步，我们获得了函数 f(rm) = 4.1542213671047525 * rm + -3.1965237646710394, 此时loss是: 55.80572601157362\n",
      "在第545步，我们获得了函数 f(rm) = 4.15541119683915 * rm + -3.204092412022966, 此时loss是: 55.799856705607645\n",
      "在第546步，我们获得了函数 f(rm) = 4.156600740452498 * rm + -3.211659239325132, 此时loss是: 55.79399022211288\n",
      "在第547步，我们获得了函数 f(rm) = 4.1577899980136 * rm + -3.219224247015209, 此时loss是: 55.78812655973197\n",
      "在第548步，我们获得了函数 f(rm) = 4.158978969591245 * rm + -3.2267874355307624, 此时loss是: 55.78226571710832\n",
      "在第549步，我们获得了函数 f(rm) = 4.160167655254203 * rm + -3.2343488053092537, 此时loss是: 55.776407692885954\n",
      "在第550步，我们获得了函数 f(rm) = 4.161356055071229 * rm + -3.241908356788039, 此时loss是: 55.770552485709516\n",
      "在第551步，我们获得了函数 f(rm) = 4.162544169111061 * rm + -3.249466090404369, 此时loss是: 55.76470009422436\n",
      "在第552步，我们获得了函数 f(rm) = 4.1637319974424205 * rm + -3.2570220065953883, 此时loss是: 55.75885051707639\n",
      "在第553步，我们获得了函数 f(rm) = 4.164919540134013 * rm + -3.264576105798138, 此时loss是: 55.75300375291231\n",
      "在第554步，我们获得了函数 f(rm) = 4.1661067972545265 * rm + -3.2721283884495533, 此时loss是: 55.74715980037933\n",
      "在第555步，我们获得了函数 f(rm) = 4.167293768872632 * rm + -3.2796788549864644, 此时loss是: 55.74131865812544\n",
      "在第556步，我们获得了函数 f(rm) = 4.168480455056986 * rm + -3.2872275058455966, 此时loss是: 55.73548032479919\n",
      "在第557步，我们获得了函数 f(rm) = 4.169666855876227 * rm + -3.2947743414635697, 此时loss是: 55.729644799049694\n",
      "在第558步，我们获得了函数 f(rm) = 4.170852971398977 * rm + -3.302319362276899, 此时loss是: 55.72381207952699\n",
      "在第559步，我们获得了函数 f(rm) = 4.1720388016938434 * rm + -3.3098625687219947, 此时loss是: 55.717982164881484\n",
      "在第560步，我们获得了函数 f(rm) = 4.173224346829414 * rm + -3.3174039612351622, 此时loss是: 55.7121550537644\n",
      "在第561步，我们获得了函数 f(rm) = 4.174409606874263 * rm + -3.3249435402526015, 此时loss是: 55.706330744827696\n",
      "在第562步，我们获得了函数 f(rm) = 4.175594581896945 * rm + -3.332481306210408, 此时loss是: 55.70050923672349\n",
      "在第563步，我们获得了函数 f(rm) = 4.1767792719660015 * rm + -3.340017259544573, 此时loss是: 55.69469052810518\n",
      "在第564步，我们获得了函数 f(rm) = 4.177963677149956 * rm + -3.3475514006909814, 此时loss是: 55.68887461762649\n",
      "在第565步，我们获得了函数 f(rm) = 4.179147797517314 * rm + -3.3550837300854144, 此时loss是: 55.68306150394176\n",
      "在第566步，我们获得了函数 f(rm) = 4.180331633136568 * rm + -3.3626142481635477, 此时loss是: 55.67725118570609\n",
      "在第567步，我们获得了函数 f(rm) = 4.18151518407619 * rm + -3.370142955360953, 此时loss是: 55.67144366157525\n",
      "在第568步，我们获得了函数 f(rm) = 4.182698450404639 * rm + -3.377669852113097, 此时loss是: 55.665638930205475\n",
      "在第569步，我们获得了函数 f(rm) = 4.183881432190356 * rm + -3.3851949388553413, 此时loss是: 55.6598369902538\n",
      "在第570步，我们获得了函数 f(rm) = 4.1850641295017645 * rm + -3.3927182160229434, 此时loss是: 55.654037840377875\n",
      "在第571步，我们获得了函数 f(rm) = 4.1862465424072735 * rm + -3.400239684051056, 此时loss是: 55.648241479236084\n",
      "在第572步，我们获得了函数 f(rm) = 4.187428670975275 * rm + -3.407759343374726, 此时loss是: 55.64244790548715\n",
      "在第573步，我们获得了函数 f(rm) = 4.188610515274143 * rm + -3.4152771944288975, 此时loss是: 55.636657117790826\n",
      "在第574步，我们获得了函数 f(rm) = 4.189792075372239 * rm + -3.422793237648409, 此时loss是: 55.63086911480726\n",
      "在第575步，我们获得了函数 f(rm) = 4.190973351337902 * rm + -3.430307473467994, 此时loss是: 55.6250838951975\n",
      "在第576步，我们获得了函数 f(rm) = 4.19215434323946 * rm + -3.437819902322283, 此时loss是: 55.619301457622754\n",
      "在第577步，我们获得了函数 f(rm) = 4.193335051145223 * rm + -3.4453305246458004, 此时loss是: 55.613521800745396\n",
      "在第578步，我们获得了函数 f(rm) = 4.194515475123483 * rm + -3.4528393408729667, 此时loss是: 55.60774492322813\n",
      "在第579步，我们获得了函数 f(rm) = 4.195695615242517 * rm + -3.4603463514380985, 此时loss是: 55.601970823734526\n",
      "在第580步，我们获得了函数 f(rm) = 4.196875471570585 * rm + -3.467851556775407, 此时loss是: 55.596199500928435\n",
      "在第581步，我们获得了函数 f(rm) = 4.198055044175931 * rm + -3.475354957319, 此时loss是: 55.590430953474815\n",
      "在第582步，我们获得了函数 f(rm) = 4.199234333126783 * rm + -3.4828565535028795, 此时loss是: 55.5846651800389\n",
      "在第583步，我们获得了函数 f(rm) = 4.200413338491352 * rm + -3.490356345760944, 此时loss是: 55.57890217928673\n",
      "在第584步，我们获得了函数 f(rm) = 4.2015920603378305 * rm + -3.4978543345269886, 此时loss是: 55.57314194988502\n",
      "在第585步，我们获得了函数 f(rm) = 4.2027704987344 * rm + -3.505350520234702, 此时loss是: 55.56738449050097\n",
      "在第586步，我们获得了函数 f(rm) = 4.2039486537492206 * rm + -3.5128449033176703, 此时loss是: 55.561629799802674\n",
      "在第587步，我们获得了函数 f(rm) = 4.205126525450438 * rm + -3.520337484209375, 此时loss是: 55.5558778764585\n",
      "在第588步，我们获得了函数 f(rm) = 4.206304113906181 * rm + -3.5278282633431925, 此时loss是: 55.55012871913778\n",
      "在第589步，我们获得了函数 f(rm) = 4.207481419184562 * rm + -3.535317241152396, 此时loss是: 55.54438232651037\n",
      "在第590步，我们获得了函数 f(rm) = 4.208658441353678 * rm + -3.542804418070154, 此时loss是: 55.53863869724674\n",
      "在第591步，我们获得了函数 f(rm) = 4.209835180481609 * rm + -3.5502897945295304, 此时loss是: 55.532897830018044\n",
      "在第592步，我们获得了函数 f(rm) = 4.211011636636418 * rm + -3.5577733709634862, 此时loss是: 55.52715972349601\n",
      "在第593步，我们获得了函数 f(rm) = 4.212187809886153 * rm + -3.5652551478048777, 此时loss是: 55.521424376353124\n",
      "在第594步，我们获得了函数 f(rm) = 4.213363700298844 * rm + -3.5727351254864566, 此时loss是: 55.515691787262334\n",
      "在第595步，我们获得了函数 f(rm) = 4.2145393079425055 * rm + -3.580213304440871, 此时loss是: 55.50996195489742\n",
      "在第596步，我们获得了函数 f(rm) = 4.2157146328851365 * rm + -3.5876896851006648, 此时loss是: 55.504234877932795\n",
      "在第597步，我们获得了函数 f(rm) = 4.216889675194718 * rm + -3.5951642678982783, 此时loss是: 55.498510555043204\n",
      "在第598步，我们获得了函数 f(rm) = 4.218064434939215 * rm + -3.602637053266047, 此时loss是: 55.49278898490439\n",
      "在第599步，我们获得了函数 f(rm) = 4.219238912186578 * rm + -3.6101080416362037, 此时loss是: 55.4870701661926\n",
      "在第600步，我们获得了函数 f(rm) = 4.220413107004738 * rm + -3.617577233440876, 此时loss是: 55.481354097584585\n",
      "在第601步，我们获得了函数 f(rm) = 4.221587019461612 * rm + -3.6250446291120877, 此时loss是: 55.475640777758024\n",
      "在第602步，我们获得了函数 f(rm) = 4.222760649625101 * rm + -3.6325102290817597, 此时loss是: 55.469930205390895\n",
      "在第603步，我们获得了函数 f(rm) = 4.223933997563088 * rm + -3.639974033781708, 此时loss是: 55.46422237916214\n",
      "在第604步，我们获得了函数 f(rm) = 4.22510706334344 * rm + -3.6474360436436455, 此时loss是: 55.45851729775107\n",
      "在第605步，我们获得了函数 f(rm) = 4.226279847034009 * rm + -3.6548962590991807, 此时loss是: 55.45281495983778\n",
      "在第606步，我们获得了函数 f(rm) = 4.227452348702629 * rm + -3.6623546805798184, 此时loss是: 55.44711536410294\n",
      "在第607步，我们获得了函数 f(rm) = 4.228624568417119 * rm + -3.66981130851696, 此时loss是: 55.44141850922793\n",
      "在第608步，我们获得了函数 f(rm) = 4.22979650624528 * rm + -3.6772661433419036, 此时loss是: 55.43572439389463\n",
      "在第609步，我们获得了函数 f(rm) = 4.230968162254899 * rm + -3.684719185485842, 此时loss是: 55.4300330167856\n",
      "在第610步，我们获得了函数 f(rm) = 4.232139536513746 * rm + -3.692170435379866, 此时loss是: 55.42434437658428\n",
      "在第611步，我们获得了函数 f(rm) = 4.233310629089573 * rm + -3.6996198934549613, 此时loss是: 55.418658471974275\n",
      "在第612步，我们获得了函数 f(rm) = 4.234481440050118 * rm + -3.707067560142011, 此时loss是: 55.41297530164018\n",
      "在第613步，我们获得了函数 f(rm) = 4.2356519694631 * rm + -3.7145134358717944, 此时loss是: 55.40729486426711\n",
      "在第614步，我们获得了函数 f(rm) = 4.236822217396225 * rm + -3.721957521074987, 此时loss是: 55.40161715854084\n",
      "在第615步，我们获得了函数 f(rm) = 4.23799218391718 * rm + -3.7293998161821604, 此时loss是: 55.39594218314776\n",
      "在第616步，我们获得了函数 f(rm) = 4.239161869093638 * rm + -3.736840321623783, 此时loss是: 55.39026993677487\n",
      "在第617步，我们获得了函数 f(rm) = 4.240331272993255 * rm + -3.7442790378302204, 此时loss是: 55.384600418109805\n",
      "在第618步，我们获得了函数 f(rm) = 4.241500395683668 * rm + -3.7517159652317336, 此时loss是: 55.37893362584084\n",
      "在第619步，我们获得了函数 f(rm) = 4.2426692372325014 * rm + -3.7591511042584806, 此时loss是: 55.37326955865682\n",
      "在第620步，我们获得了函数 f(rm) = 4.2438377977073625 * rm + -3.766584455340516, 此时loss是: 55.36760821524752\n",
      "在第621步，我们获得了函数 f(rm) = 4.245006077175841 * rm + -3.774016018907791, 此时loss是: 55.36194959430299\n",
      "在第622步，我们获得了函数 f(rm) = 4.24617407570551 * rm + -3.781445795390153, 此时loss是: 55.35629369451395\n",
      "在第623步，我们获得了函数 f(rm) = 4.24734179336393 * rm + -3.7888737852173464, 此时loss是: 55.35064051457193\n",
      "在第624步，我们获得了函数 f(rm) = 4.248509230218641 * rm + -3.7962999888190123, 此时loss是: 55.34499005316893\n",
      "在第625步，我们获得了函数 f(rm) = 4.2496763863371685 * rm + -3.803724406624689, 此时loss是: 55.33934230899768\n",
      "在第626步，我们获得了函数 f(rm) = 4.250843261787023 * rm + -3.81114703906381, 此时loss是: 55.33369728075154\n",
      "在第627步，我们获得了函数 f(rm) = 4.252009856635697 * rm + -3.818567886565707, 此时loss是: 55.32805496712425\n",
      "在第628步，我们获得了函数 f(rm) = 4.253176170950666 * rm + -3.8259869495596073, 此时loss是: 55.3224153668107\n",
      "在第629步，我们获得了函数 f(rm) = 4.254342204799392 * rm + -3.8334042284746364, 此时loss是: 55.316778478505874\n",
      "在第630步，我们获得了函数 f(rm) = 4.25550795824932 * rm + -3.840819723739815, 此时loss是: 55.31114430090565\n",
      "在第631步，我们获得了函数 f(rm) = 4.256673431367876 * rm + -3.8482334357840617, 此时loss是: 55.305512832706476\n",
      "在第632步，我们获得了函数 f(rm) = 4.257838624222473 * rm + -3.855645365036192, 此时loss是: 55.29988407260555\n",
      "在第633步，我们获得了函数 f(rm) = 4.259003536880508 * rm + -3.8630555119249177, 此时loss是: 55.29425801930048\n",
      "在第634步，我们获得了函数 f(rm) = 4.260168169409359 * rm + -3.8704638768788477, 此时loss是: 55.288634671489554\n",
      "在第635步，我们获得了函数 f(rm) = 4.261332521876389 * rm + -3.877870460326488, 此时loss是: 55.28301402787183\n",
      "在第636步，我们获得了函数 f(rm) = 4.262496594348945 * rm + -3.8852752626962417, 此时loss是: 55.2773960871468\n",
      "在第637步，我们获得了函数 f(rm) = 4.263660386894359 * rm + -3.892678284416408, 此时loss是: 55.271780848014856\n",
      "在第638步，我们获得了函数 f(rm) = 4.264823899579946 * rm + -3.9000795259151837, 此时loss是: 55.2661683091767\n",
      "在第639步，我们获得了函数 f(rm) = 4.265987132473003 * rm + -3.9074789876206633, 此时loss是: 55.2605584693338\n",
      "在第640步，我们获得了函数 f(rm) = 4.267150085640814 * rm + -3.9148766699608375, 此时loss是: 55.254951327188245\n",
      "在第641步，我们获得了函数 f(rm) = 4.268312759150644 * rm + -3.9222725733635944, 此时loss是: 55.249346881442854\n",
      "在第642步，我们获得了函数 f(rm) = 4.2694751530697435 * rm + -3.9296666982567188, 此时loss是: 55.2437451308009\n",
      "在第643步，我们获得了函数 f(rm) = 4.270637267465346 * rm + -3.937059045067893, 此时loss是: 55.23814607396624\n",
      "在第644步，我们获得了函数 f(rm) = 4.271799102404669 * rm + -3.9444496142246965, 此时loss是: 55.232549709643564\n",
      "在第645步，我们获得了函数 f(rm) = 4.272960657954914 * rm + -3.951838406154606, 此时loss是: 55.22695603653813\n",
      "在第646步，我们获得了函数 f(rm) = 4.274121934183268 * rm + -3.959225421284995, 此时loss是: 55.22136505335562\n",
      "在第647步，我们获得了函数 f(rm) = 4.275282931156897 * rm + -3.9666106600431346, 此时loss是: 55.215776758802555\n",
      "在第648步，我们获得了函数 f(rm) = 4.276443648942956 * rm + -3.9739941228561935, 此时loss是: 55.210191151586095\n",
      "在第649步，我们获得了函数 f(rm) = 4.277604087608583 * rm + -3.9813758101512366, 此时loss是: 55.20460823041379\n",
      "在第650步，我们获得了函数 f(rm) = 4.278764247220896 * rm + -3.988755722355227, 此时loss是: 55.19902799399403\n",
      "在第651步，我们获得了函数 f(rm) = 4.279924127847001 * rm + -3.996133859895025, 此时loss是: 55.19345044103573\n",
      "在第652步，我们获得了函数 f(rm) = 4.281083729553987 * rm + -4.003510223197387, 此时loss是: 55.18787557024857\n",
      "在第653步，我们获得了函数 f(rm) = 4.282243052408925 * rm + -4.010884812688969, 此时loss是: 55.18230338034253\n",
      "在第654步，我们获得了函数 f(rm) = 4.283402096478873 * rm + -4.018257628796324, 此时loss是: 55.17673387002857\n",
      "在第655步，我们获得了函数 f(rm) = 4.284560861830869 * rm + -4.0256286719459, 此时loss是: 55.171167038018005\n",
      "在第656步，我们获得了函数 f(rm) = 4.285719348531938 * rm + -4.032997942564045, 此时loss是: 55.16560288302292\n",
      "在第657步，我们获得了函数 f(rm) = 4.286877556649088 * rm + -4.040365441077005, 此时loss是: 55.16004140375601\n",
      "在第658步，我们获得了函数 f(rm) = 4.28803548624931 * rm + -4.04773116791092, 此时loss是: 55.15448259893046\n",
      "在第659步，我们获得了函数 f(rm) = 4.289193137399581 * rm + -4.05509512349183, 此时loss是: 55.1489264672602\n",
      "在第660步，我们获得了函数 f(rm) = 4.290350510166858 * rm + -4.062457308245673, 此时loss是: 55.143373007459836\n",
      "在第661步，我们获得了函数 f(rm) = 4.2915076046180864 * rm + -4.069817722598284, 此时loss是: 55.13782221824443\n",
      "在第662步，我们获得了函数 f(rm) = 4.292664420820193 * rm + -4.077176366975395, 此时loss是: 55.13227409832969\n",
      "在第663步，我们获得了函数 f(rm) = 4.293820958840089 * rm + -4.084533241802635, 此时loss是: 55.126728646432\n",
      "在第664步，我们获得了函数 f(rm) = 4.294977218744671 * rm + -4.091888347505534, 此时loss是: 55.12118586126843\n",
      "在第665步，我们获得了函数 f(rm) = 4.296133200600814 * rm + -4.099241684509515, 此时loss是: 55.11564574155652\n",
      "在第666步，我们获得了函数 f(rm) = 4.297288904475385 * rm + -4.106593253239902, 此时loss是: 55.110108286014416\n",
      "在第667步，我们获得了函数 f(rm) = 4.2984443304352284 * rm + -4.113943054121916, 此时loss是: 55.10457349336117\n",
      "在第668步，我们获得了函数 f(rm) = 4.299599478547176 * rm + -4.1212910875806745, 此时loss是: 55.09904136231603\n",
      "在第669步，我们获得了函数 f(rm) = 4.300754348878042 * rm + -4.128637354041195, 此时loss是: 55.09351189159915\n",
      "在第670步，我们获得了函数 f(rm) = 4.301908941494627 * rm + -4.13598185392839, 此时loss是: 55.087985079931165\n",
      "在第671步，我们获得了函数 f(rm) = 4.3030632564637115 * rm + -4.143324587667074, 此时loss是: 55.08246092603343\n",
      "在第672步，我们获得了函数 f(rm) = 4.304217293852061 * rm + -4.150665555681955, 此时loss是: 55.0769394286278\n",
      "在第673步，我们获得了函数 f(rm) = 4.305371053726429 * rm + -4.15800475839764, 此时loss是: 55.07142058643693\n",
      "在第674步，我们获得了函数 f(rm) = 4.306524536153548 * rm + -4.165342196238635, 此时loss是: 55.06590439818378\n",
      "在第675步，我们获得了函数 f(rm) = 4.307677741200137 * rm + -4.172677869629344, 此时loss是: 55.06039086259219\n",
      "在第676步，我们获得了函数 f(rm) = 4.308830668932897 * rm + -4.180011778994068, 此时loss是: 55.05487997838661\n",
      "在第677步，我们获得了函数 f(rm) = 4.309983319418516 * rm + -4.187343924757006, 此时loss是: 55.04937174429191\n",
      "在第678步，我们获得了函数 f(rm) = 4.311135692723664 * rm + -4.1946743073422565, 此时loss是: 55.04386615903371\n",
      "在第679步，我们获得了函数 f(rm) = 4.312287788914995 * rm + -4.2020029271738135, 此时loss是: 55.03836322133827\n",
      "在第680步，我们获得了函数 f(rm) = 4.313439608059147 * rm + -4.209329784675571, 此时loss是: 55.032862929932385\n",
      "在第681步，我们获得了函数 f(rm) = 4.314591150222742 * rm + -4.21665488027132, 此时loss是: 55.027365283543496\n",
      "在第682步，我们获得了函数 f(rm) = 4.3157424154723865 * rm + -4.223978214384751, 此时loss是: 55.021870280899584\n",
      "在第683步，我们获得了函数 f(rm) = 4.31689340387467 * rm + -4.23129978743945, 此时loss是: 55.01637792072945\n",
      "在第684步，我们获得了函数 f(rm) = 4.318044115496167 * rm + -4.238619599858904, 此时loss是: 55.01088820176216\n",
      "在第685步，我们获得了函数 f(rm) = 4.319194550403436 * rm + -4.245937652066496, 此时loss是: 55.00540112272777\n",
      "在第686步，我们获得了函数 f(rm) = 4.320344708663019 * rm + -4.25325394448551, 此时loss是: 54.999916682356705\n",
      "在第687步，我们获得了函数 f(rm) = 4.321494590341442 * rm + -4.260568477539125, 此时loss是: 54.99443487938007\n",
      "在第688步，我们获得了函数 f(rm) = 4.322644195505214 * rm + -4.267881251650419, 此时loss是: 54.98895571252954\n",
      "在第689步，我们获得了函数 f(rm) = 4.3237935242208305 * rm + -4.275192267242369, 此时loss是: 54.983479180537564\n",
      "在第690步，我们获得了函数 f(rm) = 4.324942576554769 * rm + -4.282501524737852, 此时loss是: 54.97800528213691\n",
      "在第691步，我们获得了函数 f(rm) = 4.326091352573492 * rm + -4.28980902455964, 此时loss是: 54.972534016061196\n",
      "在第692步，我们获得了函数 f(rm) = 4.327239852343446 * rm + -4.297114767130404, 此时loss是: 54.96706538104459\n",
      "在第693步，我们获得了函数 f(rm) = 4.32838807593106 * rm + -4.304418752872715, 此时loss是: 54.96159937582193\n",
      "在第694步，我们获得了函数 f(rm) = 4.329536023402748 * rm + -4.311720982209042, 此时loss是: 54.95613599912834\n",
      "在第695步，我们获得了函数 f(rm) = 4.330683694824911 * rm + -4.319021455561752, 此时loss是: 54.95067524969998\n",
      "在第696步，我们获得了函数 f(rm) = 4.331831090263928 * rm + -4.32632017335311, 此时loss是: 54.945217126273384\n",
      "在第697步，我们获得了函数 f(rm) = 4.332978209786167 * rm + -4.333617136005278, 此时loss是: 54.93976162758577\n",
      "在第698步，我们获得了函数 f(rm) = 4.334125053457978 * rm + -4.340912343940321, 此时loss是: 54.934308752374946\n",
      "在第699步，我们获得了函数 f(rm) = 4.3352716213456945 * rm + -4.348205797580198, 此时loss是: 54.928858499379245\n",
      "在第700步，我们获得了函数 f(rm) = 4.336417913515636 * rm + -4.35549749734677, 此时loss是: 54.9234108673378\n",
      "在第701步，我们获得了函数 f(rm) = 4.337563930034105 * rm + -4.3627874436617935, 此时loss是: 54.917965854990086\n",
      "在第702步，我们获得了函数 f(rm) = 4.338709670967388 * rm + -4.370075636946925, 此时loss是: 54.91252346107636\n",
      "在第703步，我们获得了函数 f(rm) = 4.339855136381755 * rm + -4.3773620776237205, 此时loss是: 54.9070836843376\n",
      "在第704步，我们获得了函数 f(rm) = 4.341000326343461 * rm + -4.384646766113633, 此时loss是: 54.90164652351502\n",
      "在第705步，我们获得了函数 f(rm) = 4.342145240918745 * rm + -4.391929702838015, 此时loss是: 54.89621197735084\n",
      "在第706步，我们获得了函数 f(rm) = 4.343289880173829 * rm + -4.399210888218117, 此时loss是: 54.8907800445875\n",
      "在第707步，我们获得了函数 f(rm) = 4.344434244174921 * rm + -4.40649032267509, 此时loss是: 54.88535072396856\n",
      "在第708步，我们获得了函数 f(rm) = 4.34557833298821 * rm + -4.413768006629981, 此时loss是: 54.879924014237574\n",
      "在第709步，我们获得了函数 f(rm) = 4.346722146679873 * rm + -4.421043940503739, 此时loss是: 54.87449991413912\n",
      "在第710步，我们获得了函数 f(rm) = 4.347865685316069 * rm + -4.428318124717208, 此时loss是: 54.869078422418355\n",
      "在第711步，我们获得了函数 f(rm) = 4.349008948962941 * rm + -4.435590559691134, 此时loss是: 54.86365953782075\n",
      "在第712步，我们获得了函数 f(rm) = 4.350151937686615 * rm + -4.44286124584616, 此时loss是: 54.85824325909276\n",
      "在第713步，我们获得了函数 f(rm) = 4.351294651553204 * rm + -4.450130183602829, 此时loss是: 54.852829584981144\n",
      "在第714步，我们获得了函数 f(rm) = 4.352437090628803 * rm + -4.457397373381581, 此时loss是: 54.84741851423344\n",
      "在第715步，我们获得了函数 f(rm) = 4.353579254979492 * rm + -4.464662815602758, 此时loss是: 54.84201004559763\n",
      "在第716步，我们获得了函数 f(rm) = 4.354721144671332 * rm + -4.471926510686599, 此时loss是: 54.836604177822515\n",
      "在第717步，我们获得了函数 f(rm) = 4.355862759770375 * rm + -4.4791884590532405, 此时loss是: 54.83120090965732\n",
      "在第718步，我们获得了函数 f(rm) = 4.3570041003426505 * rm + -4.48644866112272, 此时loss是: 54.825800239851866\n",
      "在第719步，我们获得了函数 f(rm) = 4.358145166454175 * rm + -4.493707117314975, 此时loss是: 54.82040216715669\n",
      "在第720步，我们获得了函数 f(rm) = 4.359285958170949 * rm + -4.500963828049839, 此时loss是: 54.815006690322875\n",
      "在第721步，我们获得了函数 f(rm) = 4.360426475558957 * rm + -4.508218793747046, 此时loss是: 54.80961380810221\n",
      "在第722步，我们获得了函数 f(rm) = 4.361566718684166 * rm + -4.515472014826231, 此时loss是: 54.80422351924673\n",
      "在第723步，我们获得了函数 f(rm) = 4.36270668761253 * rm + -4.522723491706924, 此时loss是: 54.79883582250961\n",
      "在第724步，我们获得了函数 f(rm) = 4.363846382409986 * rm + -4.529973224808558, 此时loss是: 54.79345071664415\n",
      "在第725步，我们获得了函数 f(rm) = 4.364985803142454 * rm + -4.5372212145504625, 此时loss是: 54.788068200404474\n",
      "在第726步，我们获得了函数 f(rm) = 4.366124949875839 * rm + -4.544467461351868, 此时loss是: 54.78268827254526\n",
      "在第727步，我们获得了函数 f(rm) = 4.367263822676032 * rm + -4.5517119656319025, 此时loss是: 54.77731093182179\n",
      "在第728步，我们获得了函数 f(rm) = 4.368402421608903 * rm + -4.558954727809595, 此时loss是: 54.77193617698995\n",
      "在第729步，我们获得了函数 f(rm) = 4.369540746740312 * rm + -4.566195748303872, 此时loss是: 54.76656400680635\n",
      "在第730步，我们获得了函数 f(rm) = 4.3706787981361 * rm + -4.573435027533559, 此时loss是: 54.76119442002781\n",
      "在第731步，我们获得了函数 f(rm) = 4.371816575862092 * rm + -4.580672565917384, 此时loss是: 54.75582741541215\n",
      "在第732步，我们获得了函数 f(rm) = 4.372954079984099 * rm + -4.587908363873971, 此时loss是: 54.750462991717676\n",
      "在第733步，我们获得了函数 f(rm) = 4.374091310567916 * rm + -4.595142421821844, 此时loss是: 54.74510114770314\n",
      "在第734步，我们获得了函数 f(rm) = 4.37522826767932 * rm + -4.602374740179428, 此时loss是: 54.73974188212817\n",
      "在第735步，我们获得了函数 f(rm) = 4.376364951384074 * rm + -4.609605319365047, 此时loss是: 54.73438519375265\n",
      "在第736步，我们获得了函数 f(rm) = 4.377501361747925 * rm + -4.616834159796921, 此时loss是: 54.72903108133741\n",
      "在第737步，我们获得了函数 f(rm) = 4.378637498836602 * rm + -4.624061261893174, 此时loss是: 54.72367954364355\n",
      "在第738步，我们获得了函数 f(rm) = 4.379773362715822 * rm + -4.631286626071827, 此时loss是: 54.71833057943303\n",
      "在第739步，我们获得了函数 f(rm) = 4.380908953451284 * rm + -4.638510252750801, 此时loss是: 54.71298418746826\n",
      "在第740步，我们获得了函数 f(rm) = 4.382044271108672 * rm + -4.645732142347916, 此时loss是: 54.707640366512315\n",
      "在第741步，我们获得了函数 f(rm) = 4.383179315753653 * rm + -4.652952295280893, 此时loss是: 54.70229911532871\n",
      "在第742步，我们获得了函数 f(rm) = 4.3843140874518784 * rm + -4.660170711967351, 此时loss是: 54.69696043268185\n",
      "在第743步，我们获得了函数 f(rm) = 4.385448586268985 * rm + -4.667387392824809, 此时loss是: 54.691624317336405\n",
      "在第744步，我们获得了函数 f(rm) = 4.386582812270593 * rm + -4.674602338270685, 此时loss是: 54.686290768057894\n",
      "在第745步，我们获得了函数 f(rm) = 4.387716765522307 * rm + -4.681815548722299, 此时loss是: 54.680959783612245\n",
      "在第746步，我们获得了函数 f(rm) = 4.388850446089716 * rm + -4.689027024596868, 此时loss是: 54.675631362766154\n",
      "在第747步，我们获得了函数 f(rm) = 4.389983854038393 * rm + -4.696236766311509, 此时loss是: 54.670305504286844\n",
      "在第748步，我们获得了函数 f(rm) = 4.391116989433894 * rm + -4.703444774283241, 此时loss是: 54.664982206942014\n",
      "在第749步，我们获得了函数 f(rm) = 4.392249852341763 * rm + -4.71065104892898, 此时loss是: 54.6596614695\n",
      "在第750步，我们获得了函数 f(rm) = 4.393382442827523 * rm + -4.717855590665543, 此时loss是: 54.65434329072988\n",
      "在第751步，我们获得了函数 f(rm) = 4.394514760956686 * rm + -4.725058399909647, 此时loss是: 54.64902766940123\n",
      "在第752步，我们获得了函数 f(rm) = 4.395646806794745 * rm + -4.732259477077909, 此时loss是: 54.64371460428423\n",
      "在第753步，我们获得了函数 f(rm) = 4.3967785804071795 * rm + -4.739458822586843, 此时loss是: 54.638404094149486\n",
      "在第754步，我们获得了函数 f(rm) = 4.39791008185945 * rm + -4.7466564368528665, 此时loss是: 54.63309613776852\n",
      "在第755步，我们获得了函数 f(rm) = 4.399041311217007 * rm + -4.753852320292295, 此时loss是: 54.62779073391308\n",
      "在第756步，我们获得了函数 f(rm) = 4.400172268545279 * rm + -4.761046473321345, 此时loss是: 54.62248788135588\n",
      "在第757步，我们获得了函数 f(rm) = 4.401302953909682 * rm + -4.768238896356132, 此时loss是: 54.61718757886992\n",
      "在第758步，我们获得了函数 f(rm) = 4.402433367375616 * rm + -4.775429589812671, 此时loss是: 54.611889825228914\n",
      "在第759步，我们获得了函数 f(rm) = 4.403563509008466 * rm + -4.782618554106877, 此时loss是: 54.60659461920721\n",
      "在第760步，我们获得了函数 f(rm) = 4.404693378873598 * rm + -4.789805789654568, 此时loss是: 54.601301959579644\n",
      "在第761步，我们获得了函数 f(rm) = 4.405822977036367 * rm + -4.796991296871457, 此时loss是: 54.59601184512169\n",
      "在第762步，我们获得了函数 f(rm) = 4.406952303562108 * rm + -4.804175076173162, 此时loss是: 54.59072427460947\n",
      "在第763步，我们获得了函数 f(rm) = 4.408081358516144 * rm + -4.811357127975197, 此时loss是: 54.585439246819504\n",
      "在第764步，我们获得了函数 f(rm) = 4.409210141963779 * rm + -4.818537452692977, 此时loss是: 54.580156760529185\n",
      "在第765步，我们获得了函数 f(rm) = 4.410338653970304 * rm + -4.82571605074182, 此时loss是: 54.57487681451621\n",
      "在第766步，我们获得了函数 f(rm) = 4.411466894600992 * rm + -4.832892922536941, 此时loss是: 54.5695994075591\n",
      "在第767步，我们获得了函数 f(rm) = 4.412594863921101 * rm + -4.840068068493456, 此时loss是: 54.56432453843678\n",
      "在第768步，我们获得了函数 f(rm) = 4.4137225619958755 * rm + -4.8472414890263815, 此时loss是: 54.559052205928865\n",
      "在第769步，我们获得了函数 f(rm) = 4.41484998889054 * rm + -4.8544131845506335, 此时loss是: 54.553782408815565\n",
      "在第770步，我们获得了函数 f(rm) = 4.415977144670308 * rm + -4.861583155481029, 此时loss是: 54.54851514587752\n",
      "在第771步，我们获得了函数 f(rm) = 4.417104029400375 * rm + -4.868751402232286, 此时loss是: 54.54325041589623\n",
      "在第772步，我们获得了函数 f(rm) = 4.418230643145919 * rm + -4.875917925219021, 此时loss是: 54.537988217653634\n",
      "在第773步，我们获得了函数 f(rm) = 4.419356985972105 * rm + -4.883082724855751, 此时loss是: 54.532728549932095\n",
      "在第774步，我们获得了函数 f(rm) = 4.420483057944083 * rm + -4.890245801556895, 此时loss是: 54.52747141151479\n",
      "在第775步，我们获得了函数 f(rm) = 4.421608859126985 * rm + -4.89740715573677, 此时loss是: 54.522216801185536\n",
      "在第776步，我们获得了函数 f(rm) = 4.422734389585928 * rm + -4.904566787809596, 此时loss是: 54.51696471772841\n",
      "在第777步，我们获得了函数 f(rm) = 4.4238596493860145 * rm + -4.911724698189491, 此时loss是: 54.51171515992844\n",
      "在第778步，我们获得了函数 f(rm) = 4.424984638592329 * rm + -4.918880887290474, 此时loss是: 54.506468126570944\n",
      "在第779步，我们获得了函数 f(rm) = 4.426109357269942 * rm + -4.926035355526466, 此时loss是: 54.501223616442026\n",
      "在第780步，我们获得了函数 f(rm) = 4.42723380548391 * rm + -4.933188103311286, 此时loss是: 54.49598162832833\n",
      "在第781步，我们获得了函数 f(rm) = 4.42835798329927 * rm + -4.940339131058656, 此时loss是: 54.490742161016904\n",
      "在第782步，我们获得了函数 f(rm) = 4.429481890781046 * rm + -4.947488439182197, 此时loss是: 54.48550521329561\n",
      "在第783步，我们获得了函数 f(rm) = 4.4306055279942465 * rm + -4.954636028095431, 此时loss是: 54.48027078395295\n",
      "在第784步，我们获得了函数 f(rm) = 4.431728895003863 * rm + -4.961781898211779, 此时loss是: 54.47503887177771\n",
      "在第785步，我们获得了函数 f(rm) = 4.432851991874871 * rm + -4.9689260499445655, 此时loss是: 54.46980947555935\n",
      "在第786步，我们获得了函数 f(rm) = 4.433974818672232 * rm + -4.976068483707014, 此时loss是: 54.46458259408816\n",
      "在第787步，我们获得了函数 f(rm) = 4.435097375460892 * rm + -4.983209199912247, 此时loss是: 54.45935822615476\n",
      "在第788步，我们获得了函数 f(rm) = 4.43621966230578 * rm + -4.990348198973292, 此时loss是: 54.454136370550415\n",
      "在第789步，我们获得了函数 f(rm) = 4.437341679271811 * rm + -4.997485481303073, 此时loss是: 54.448917026066894\n",
      "在第790步，我们获得了函数 f(rm) = 4.438463426423882 * rm + -5.004621047314417, 此时loss是: 54.44370019149681\n",
      "在第791步，我们获得了函数 f(rm) = 4.4395849038268755 * rm + -5.011754897420049, 此时loss是: 54.438485865633055\n",
      "在第792步，我们获得了函数 f(rm) = 4.440706111545659 * rm + -5.018887032032599, 此时loss是: 54.43327404726931\n",
      "在第793步，我们获得了函数 f(rm) = 4.441827049645085 * rm + -5.026017451564595, 此时loss是: 54.428064735199634\n",
      "在第794步，我们获得了函数 f(rm) = 4.4429477181899895 * rm + -5.033146156428466, 此时loss是: 54.42285792821892\n",
      "在第795步，我们获得了函数 f(rm) = 4.444068117245192 * rm + -5.040273147036542, 此时loss是: 54.41765362512238\n",
      "在第796步，我们获得了函数 f(rm) = 4.445188246875498 * rm + -5.047398423801054, 此时loss是: 54.41245182470598\n",
      "在第797步，我们获得了函数 f(rm) = 4.446308107145695 * rm + -5.054521987134134, 此时loss是: 54.407252525766225\n",
      "在第798步，我们获得了函数 f(rm) = 4.447427698120559 * rm + -5.061643837447814, 此时loss是: 54.40205572710014\n",
      "在第799步，我们获得了函数 f(rm) = 4.448547019864847 * rm + -5.068763975154029, 此时loss是: 54.396861427505456\n",
      "在第800步，我们获得了函数 f(rm) = 4.449666072443301 * rm + -5.0758824006646135, 此时loss是: 54.39166962578043\n",
      "在第801步，我们获得了函数 f(rm) = 4.450784855920649 * rm + -5.082999114391302, 此时loss是: 54.38648032072376\n",
      "在第802步，我们获得了函数 f(rm) = 4.451903370361601 * rm + -5.090114116745731, 此时loss是: 54.381293511134864\n",
      "在第803步，我们获得了函数 f(rm) = 4.4530216158308535 * rm + -5.097227408139439, 此时loss是: 54.3761091958137\n",
      "在第804步，我们获得了函数 f(rm) = 4.454139592393088 * rm + -5.104338988983864, 此时loss是: 54.37092737356081\n",
      "在第805步，我们获得了函数 f(rm) = 4.455257300112967 * rm + -5.111448859690346, 此时loss是: 54.36574804317737\n",
      "在第806步，我们获得了函数 f(rm) = 4.456374739055141 * rm + -5.118557020670125, 此时loss是: 54.360571203465\n",
      "在第807步，我们获得了函数 f(rm) = 4.457491909284243 * rm + -5.125663472334344, 此时loss是: 54.355396853226\n",
      "在第808步，我们获得了函数 f(rm) = 4.458608810864892 * rm + -5.132768215094046, 此时loss是: 54.35022499126318\n",
      "在第809步，我们获得了函数 f(rm) = 4.4597254438616885 * rm + -5.139871249360175, 此时loss是: 54.34505561638006\n",
      "在第810步，我们获得了函数 f(rm) = 4.460841808339221 * rm + -5.1469725755435745, 此时loss是: 54.339888727380576\n",
      "在第811步，我们获得了函数 f(rm) = 4.461957904362061 * rm + -5.154072194054993, 此时loss是: 54.33472432306924\n",
      "在第812步，我们获得了函数 f(rm) = 4.463073731994764 * rm + -5.161170105305077, 此时loss是: 54.32956240225124\n",
      "在第813步，我们获得了函数 f(rm) = 4.46418929130187 * rm + -5.168266309704377, 此时loss是: 54.32440296373233\n",
      "在第814步，我们获得了函数 f(rm) = 4.465304582347905 * rm + -5.175360807663342, 此时loss是: 54.319246006318764\n",
      "在第815步，我们获得了函数 f(rm) = 4.466419605197377 * rm + -5.182453599592324, 此时loss是: 54.31409152881751\n",
      "在第816步，我们获得了函数 f(rm) = 4.46753435991478 * rm + -5.189544685901576, 此时loss是: 54.30893953003589\n",
      "在第817步，我们获得了函数 f(rm) = 4.4686488465645935 * rm + -5.196634067001252, 此时loss是: 54.303790008781874\n",
      "在第818步，我们获得了函数 f(rm) = 4.469763065211279 * rm + -5.203721743301408, 此时loss是: 54.29864296386428\n",
      "在第819步，我们获得了函数 f(rm) = 4.470877015919286 * rm + -5.210807715212, 此时loss是: 54.29349839409209\n",
      "在第820步，我们获得了函数 f(rm) = 4.471990698753043 * rm + -5.217891983142888, 此时loss是: 54.288356298275055\n",
      "在第821步，我们获得了函数 f(rm) = 4.473104113776969 * rm + -5.22497454750383, 此时loss是: 54.28321667522352\n",
      "在第822步，我们获得了函数 f(rm) = 4.474217261055464 * rm + -5.232055408704489, 此时loss是: 54.27807952374835\n",
      "在第823步，我们获得了函数 f(rm) = 4.475330140652913 * rm + -5.2391345671544265, 此时loss是: 54.272944842661005\n",
      "在第824步，我们获得了函数 f(rm) = 4.476442752633686 * rm + -5.246212023263108, 此时loss是: 54.26781263077346\n",
      "在第825步，我们获得了函数 f(rm) = 4.477555097062138 * rm + -5.2532877774398985, 此时loss是: 54.262682886898446\n",
      "在第826步，我们获得了函数 f(rm) = 4.478667174002607 * rm + -5.260361830094066, 此时loss是: 54.25755560984903\n",
      "在第827步，我们获得了函数 f(rm) = 4.479778983519417 * rm + -5.267434181634779, 此时loss是: 54.252430798438944\n",
      "在第828步，我们获得了函数 f(rm) = 4.480890525676876 * rm + -5.274504832471108, 此时loss是: 54.247308451482404\n",
      "在第829步，我们获得了函数 f(rm) = 4.482001800539276 * rm + -5.281573783012027, 此时loss是: 54.242188567794535\n",
      "在第830步，我们获得了函数 f(rm) = 4.483112808170895 * rm + -5.288641033666407, 此时loss是: 54.23707114619053\n",
      "在第831步，我们获得了函数 f(rm) = 4.484223548635993 * rm + -5.295706584843026, 此时loss是: 54.231956185486546\n",
      "在第832步，我们获得了函数 f(rm) = 4.485334021998817 * rm + -5.302770436950559, 此时loss是: 54.226843684499194\n",
      "在第833步，我们获得了函数 f(rm) = 4.486444228323599 * rm + -5.309832590397587, 此时loss是: 54.22173364204543\n",
      "在第834步，我们获得了函数 f(rm) = 4.487554167674552 * rm + -5.31689304559259, 此时loss是: 54.216626056943205\n",
      "在第835步，我们获得了函数 f(rm) = 4.488663840115878 * rm + -5.32395180294395, 此时loss是: 54.21152092801073\n",
      "在第836步，我们获得了函数 f(rm) = 4.489773245711759 * rm + -5.331008862859952, 此时loss是: 54.2064182540669\n",
      "在第837步，我们获得了函数 f(rm) = 4.490882384526366 * rm + -5.3380642257487825, 此时loss是: 54.201318033931024\n",
      "在第838步，我们获得了函数 f(rm) = 4.491991256623852 * rm + -5.3451178920185285, 此时loss是: 54.19622026642327\n",
      "在第839步，我们获得了函数 f(rm) = 4.4930998620683535 * rm + -5.35216986207718, 此时loss是: 54.1911249503641\n",
      "在第840步，我们获得了函数 f(rm) = 4.494208200923995 * rm + -5.359220136332629, 此时loss是: 54.18603208457455\n",
      "在第841步，我们获得了函数 f(rm) = 4.4953162732548835 * rm + -5.366268715192669, 此时loss是: 54.18094166787651\n",
      "在第842步，我们获得了函数 f(rm) = 4.49642407912511 * rm + -5.373315599064997, 此时loss是: 54.175853699092166\n",
      "在第843步，我们获得了函数 f(rm) = 4.497531618598751 * rm + -5.3803607883572075, 此时loss是: 54.17076817704429\n",
      "在第844步，我们获得了函数 f(rm) = 4.498638891739868 * rm + -5.387404283476802, 此时loss是: 54.16568510055639\n",
      "在第845步，我们获得了函数 f(rm) = 4.499745898612507 * rm + -5.394446084831182, 此时loss是: 54.16060446845237\n",
      "在第846步，我们获得了函数 f(rm) = 4.500852639280697 * rm + -5.401486192827651, 此时loss是: 54.15552627955669\n",
      "在第847步，我们获得了函数 f(rm) = 4.501959113808454 * rm + -5.408524607873414, 此时loss是: 54.150450532694535\n",
      "在第848步，我们获得了函数 f(rm) = 4.503065322259776 * rm + -5.415561330375579, 此时loss是: 54.14537722669154\n",
      "在第849步，我们获得了函数 f(rm) = 4.504171264698647 * rm + -5.422596360741156, 此时loss是: 54.14030636037395\n",
      "在第850步，我们获得了函数 f(rm) = 4.505276941189037 * rm + -5.429629699377056, 此时loss是: 54.13523793256855\n",
      "在第851步，我们获得了函数 f(rm) = 4.506382351794899 * rm + -5.436661346690094, 此时loss是: 54.13017194210259\n",
      "在第852步，我们获得了函数 f(rm) = 4.507487496580171 * rm + -5.443691303086987, 此时loss是: 54.12510838780412\n",
      "在第853步，我们获得了函数 f(rm) = 4.508592375608774 * rm + -5.450719568974352, 此时loss是: 54.12004726850163\n",
      "在第854步，我们获得了函数 f(rm) = 4.509696988944616 * rm + -5.457746144758711, 此时loss是: 54.114988583023944\n",
      "在第855步，我们获得了函数 f(rm) = 4.510801336651589 * rm + -5.464771030846485, 此时loss是: 54.10993233020101\n",
      "在第856步，我们获得了函数 f(rm) = 4.511905418793569 * rm + -5.471794227644001, 此时loss是: 54.10487850886267\n",
      "在第857步，我们获得了函数 f(rm) = 4.513009235434417 * rm + -5.478815735557485, 此时loss是: 54.09982711783984\n",
      "在第858步，我们获得了函数 f(rm) = 4.5141127866379795 * rm + -5.485835554993068, 此时loss是: 54.09477815596378\n",
      "在第859步，我们获得了函数 f(rm) = 4.515216072468085 * rm + -5.492853686356781, 此时loss是: 54.08973162206633\n",
      "在第860步，我们获得了函数 f(rm) = 4.516319092988551 * rm + -5.49987013005456, 此时loss是: 54.08468751497993\n",
      "在第861步，我们获得了函数 f(rm) = 4.517421848263175 * rm + -5.50688488649224, 此时loss是: 54.07964583353752\n",
      "在第862步，我们获得了函数 f(rm) = 4.518524338355742 * rm + -5.513897956075561, 此时loss是: 54.074606576572705\n",
      "在第863步，我们获得了函数 f(rm) = 4.5196265633300206 * rm + -5.520909339210165, 此时loss是: 54.069569742919505\n",
      "在第864步，我们获得了函数 f(rm) = 4.520728523249765 * rm + -5.527919036301596, 此时loss是: 54.064535331412635\n",
      "在第865步，我们获得了函数 f(rm) = 4.521830218178714 * rm + -5.534927047755301, 此时loss是: 54.059503340887275\n",
      "在第866步，我们获得了函数 f(rm) = 4.522931648180588 * rm + -5.5419333739766286, 此时loss是: 54.05447377017919\n",
      "在第867步，我们获得了函数 f(rm) = 4.5240328133190975 * rm + -5.5489380153708305, 此时loss是: 54.04944661812497\n",
      "在第868步，我们获得了函数 f(rm) = 4.525133713657933 * rm + -5.555940972343061, 此时loss是: 54.04442188356109\n",
      "在第869步，我们获得了函数 f(rm) = 4.526234349260772 * rm + -5.562942245298376, 此时loss是: 54.039399565325276\n",
      "在第870步，我们获得了函数 f(rm) = 4.527334720191276 * rm + -5.569941834641736, 此时loss是: 54.034379662255645\n",
      "在第871步，我们获得了函数 f(rm) = 4.5284348265130925 * rm + -5.576939740778003, 此时loss是: 54.029362173190485\n",
      "在第872步，我们获得了函数 f(rm) = 4.529534668289851 * rm + -5.583935964111941, 此时loss是: 54.02434709696913\n",
      "在第873步，我们获得了函数 f(rm) = 4.530634245585168 * rm + -5.590930505048217, 此时loss是: 54.01933443243124\n",
      "在第874步，我们获得了函数 f(rm) = 4.531733558462644 * rm + -5.597923363991401, 此时loss是: 54.01432417841708\n",
      "在第875步，我们获得了函数 f(rm) = 4.532832606985864 * rm + -5.604914541345967, 此时loss是: 54.00931633376745\n",
      "在第876步，我们获得了函数 f(rm) = 4.533931391218398 * rm + -5.61190403751629, 此时loss是: 54.004310897323634\n",
      "在第877步，我们获得了函数 f(rm) = 4.5350299112238 * rm + -5.618891852906647, 此时loss是: 53.99930786792762\n",
      "在第878步，我们获得了函数 f(rm) = 4.53612816706561 * rm + -5.62587798792122, 此时loss是: 53.994307244422\n",
      "在第879步，我们获得了函数 f(rm) = 4.537226158807352 * rm + -5.632862442964093, 此时loss是: 53.989309025649696\n",
      "在第880步，我们获得了函数 f(rm) = 4.538323886512534 * rm + -5.639845218439252, 此时loss是: 53.98431321045431\n",
      "在第881步，我们获得了函数 f(rm) = 4.53942135024465 * rm + -5.646826314750586, 此时loss是: 53.97931979767991\n",
      "在第882步，我们获得了函数 f(rm) = 4.540518550067178 * rm + -5.653805732301889, 此时loss是: 53.97432878617146\n",
      "在第883步，我们获得了函数 f(rm) = 4.541615486043582 * rm + -5.660783471496854, 此时loss是: 53.96934017477404\n",
      "在第884步，我们获得了函数 f(rm) = 4.5427121582373085 * rm + -5.667759532739081, 此时loss是: 53.9643539623334\n",
      "在第885步，我们获得了函数 f(rm) = 4.543808566711789 * rm + -5.67473391643207, 此时loss是: 53.95937014769604\n",
      "在第886步，我们获得了函数 f(rm) = 4.544904711530442 * rm + -5.681706622979225, 此时loss是: 53.954388729708896\n",
      "在第887步，我们获得了函数 f(rm) = 4.546000592756671 * rm + -5.688677652783854, 此时loss是: 53.94940970721938\n",
      "在第888步，我们获得了函数 f(rm) = 4.54709621045386 * rm + -5.695647006249166, 此时loss是: 53.944433079075594\n",
      "在第889步，我们获得了函数 f(rm) = 4.548191564685381 * rm + -5.7026146837782745, 此时loss是: 53.93945884412606\n",
      "在第890步，我们获得了函数 f(rm) = 4.549286655514591 * rm + -5.709580685774196, 此时loss是: 53.934487001219956\n",
      "在第891步，我们获得了函数 f(rm) = 4.550381483004831 * rm + -5.71654501263985, 此时loss是: 53.92951754920691\n",
      "在第892步，我们获得了函数 f(rm) = 4.551476047219425 * rm + -5.723507664778058, 此时loss是: 53.92455048693742\n",
      "在第893步，我们获得了函数 f(rm) = 4.552570348221685 * rm + -5.730468642591546, 此时loss是: 53.91958581326196\n",
      "在第894步，我们获得了函数 f(rm) = 4.553664386074906 * rm + -5.737427946482943, 此时loss是: 53.914623527032134\n",
      "在第895步，我们获得了函数 f(rm) = 4.554758160842368 * rm + -5.74438557685478, 此时loss是: 53.90966362709974\n",
      "在第896步，我们获得了函数 f(rm) = 4.555851672587337 * rm + -5.751341534109493, 此时loss是: 53.90470611231719\n",
      "在第897步，我们获得了函数 f(rm) = 4.55694492137306 * rm + -5.758295818649419, 此时loss是: 53.89975098153769\n",
      "在第898步，我们获得了函数 f(rm) = 4.558037907262773 * rm + -5.765248430876801, 此时loss是: 53.89479823361452\n",
      "在第899步，我们获得了函数 f(rm) = 4.559130630319696 * rm + -5.772199371193782, 此时loss是: 53.88984786740206\n",
      "在第900步，我们获得了函数 f(rm) = 4.560223090607032 * rm + -5.779148640002412, 此时loss是: 53.88489988175486\n",
      "在第901步，我们获得了函数 f(rm) = 4.561315288187969 * rm + -5.786096237704641, 此时loss是: 53.879954275528135\n",
      "在第902步，我们获得了函数 f(rm) = 4.562407223125681 * rm + -5.793042164702325, 此时loss是: 53.87501104757772\n",
      "在第903步，我们获得了函数 f(rm) = 4.5634988954833275 * rm + -5.799986421397222, 此时loss是: 53.87007019675986\n",
      "在第904步，我们获得了函数 f(rm) = 4.564590305324052 * rm + -5.806929008190991, 此时loss是: 53.86513172193141\n",
      "在第905步，我们获得了函数 f(rm) = 4.565681452710981 * rm + -5.8138699254852, 此时loss是: 53.86019562194981\n",
      "在第906步，我们获得了函数 f(rm) = 4.566772337707228 * rm + -5.820809173681315, 此时loss是: 53.85526189567306\n",
      "在第907步，我们获得了函数 f(rm) = 4.567862960375891 * rm + -5.82774675318071, 此时loss是: 53.85033054195968\n",
      "在第908步，我们获得了函数 f(rm) = 4.568953320780051 * rm + -5.834682664384659, 此时loss是: 53.845401559668716\n",
      "在第909步，我们获得了函数 f(rm) = 4.570043418982777 * rm + -5.841616907694341, 此时loss是: 53.84047494765976\n",
      "在第910步，我们获得了函数 f(rm) = 4.571133255047122 * rm + -5.848549483510838, 此时loss是: 53.83555070479303\n",
      "在第911步，我们获得了函数 f(rm) = 4.57222282903612 * rm + -5.855480392235136, 此时loss是: 53.83062882992918\n",
      "在第912步，我们获得了函数 f(rm) = 4.573312141012796 * rm + -5.862409634268125, 此时loss是: 53.825709321929466\n",
      "在第913步，我们获得了函数 f(rm) = 4.574401191040153 * rm + -5.869337210010597, 此时loss是: 53.82079217965581\n",
      "在第914步，我们获得了函数 f(rm) = 4.575489979181187 * rm + -5.87626311986325, 此时loss是: 53.815877401970404\n",
      "在第915步，我们获得了函数 f(rm) = 4.576578505498872 * rm + -5.883187364226683, 此时loss是: 53.81096498773619\n",
      "在第916步，我们获得了函数 f(rm) = 4.577666770056168 * rm + -5.8901099435014, 此时loss是: 53.80605493581672\n",
      "在第917步，我们获得了函数 f(rm) = 4.578754772916024 * rm + -5.89703085808781, 此时loss是: 53.80114724507586\n",
      "在第918步，我们获得了函数 f(rm) = 4.579842514141369 * rm + -5.903950108386223, 此时loss是: 53.796241914378214\n",
      "在第919步，我们获得了函数 f(rm) = 4.580929993795119 * rm + -5.910867694796854, 此时loss是: 53.79133894258895\n",
      "在第920步，我们获得了函数 f(rm) = 4.582017211940176 * rm + -5.917783617719824, 此时loss是: 53.78643832857352\n",
      "在第921步，我们获得了函数 f(rm) = 4.583104168639424 * rm + -5.924697877555153, 此时loss是: 53.78154007119817\n",
      "在第922步，我们获得了函数 f(rm) = 4.584190863955734 * rm + -5.931610474702769, 此时loss是: 53.776644169329714\n",
      "在第923步，我们获得了函数 f(rm) = 4.585277297951961 * rm + -5.938521409562501, 此时loss是: 53.77175062183534\n",
      "在第924步，我们获得了函数 f(rm) = 4.586363470690947 * rm + -5.945430682534084, 此时loss是: 53.76685942758285\n",
      "在第925步，我们获得了函数 f(rm) = 4.587449382235516 * rm + -5.9523382940171565, 此时loss是: 53.76197058544066\n",
      "在第926步，我们获得了函数 f(rm) = 4.588535032648476 * rm + -5.95924424441126, 此时loss是: 53.75708409427759\n",
      "在第927步，我们获得了函数 f(rm) = 4.589620421992626 * rm + -5.96614853411584, 此时loss是: 53.752199952963124\n",
      "在第928步，我们获得了函数 f(rm) = 4.590705550330742 * rm + -5.973051163530246, 此时loss是: 53.747318160367286\n",
      "在第929步，我们获得了函数 f(rm) = 4.591790417725591 * rm + -5.979952133053732, 此时loss是: 53.74243871536059\n",
      "在第930步，我们获得了函数 f(rm) = 4.5928750242399214 * rm + -5.986851443085457, 此时loss是: 53.73756161681411\n",
      "在第931步，我们获得了函数 f(rm) = 4.593959369936468 * rm + -5.993749094024481, 此时loss是: 53.732686863599376\n",
      "在第932步，我们获得了函数 f(rm) = 4.595043454877951 * rm + -6.0006450862697704, 此时loss是: 53.72781445458879\n",
      "在第933步，我们获得了函数 f(rm) = 4.596127279127074 * rm + -6.007539420220195, 此时loss是: 53.72294438865472\n",
      "在第934步，我们获得了函数 f(rm) = 4.597210842746526 * rm + -6.014432096274529, 此时loss是: 53.71807666467075\n",
      "在第935步，我们获得了函数 f(rm) = 4.598294145798983 * rm + -6.021323114831451, 此时loss是: 53.71321128151032\n",
      "在第936步，我们获得了函数 f(rm) = 4.599377188347102 * rm + -6.028212476289542, 此时loss是: 53.70834823804809\n",
      "在第937步，我们获得了函数 f(rm) = 4.600459970453529 * rm + -6.035100181047288, 此时loss是: 53.703487533158686\n",
      "在第938步，我们获得了函数 f(rm) = 4.601542492180891 * rm + -6.041986229503081, 此时loss是: 53.698629165717655\n",
      "在第939步，我们获得了函数 f(rm) = 4.602624753591803 * rm + -6.048870622055214, 此时loss是: 53.69377313460093\n",
      "在第940步，我们获得了函数 f(rm) = 4.603706754748863 * rm + -6.055753359101888, 此时loss是: 53.68891943868501\n",
      "在第941步，我们获得了函数 f(rm) = 4.604788495714657 * rm + -6.0626344410412045, 此时loss是: 53.684068076846856\n",
      "在第942步，我们获得了函数 f(rm) = 4.605869976551752 * rm + -6.069513868271171, 此时loss是: 53.67921904796413\n",
      "在第943步，我们获得了函数 f(rm) = 4.606951197322702 * rm + -6.0763916411897, 此时loss是: 53.67437235091485\n",
      "在第944步，我们获得了函数 f(rm) = 4.608032158090045 * rm + -6.083267760194606, 此时loss是: 53.66952798457776\n",
      "在第945步，我们获得了函数 f(rm) = 4.609112858916306 * rm + -6.090142225683611, 此时loss是: 53.664685947832034\n",
      "在第946步，我们获得了函数 f(rm) = 4.610193299863993 * rm + -6.097015038054338, 此时loss是: 53.659846239557275\n",
      "在第947步，我们获得了函数 f(rm) = 4.6112734809955995 * rm + -6.103886197704319, 此时loss是: 53.65500885863389\n",
      "在第948步，我们获得了函数 f(rm) = 4.612353402373605 * rm + -6.110755705030985, 此时loss是: 53.650173803942785\n",
      "在第949步，我们获得了函数 f(rm) = 4.613433064060471 * rm + -6.117623560431674, 此时loss是: 53.645341074365106\n",
      "在第950步，我们获得了函数 f(rm) = 4.614512466118649 * rm + -6.12448976430363, 此时loss是: 53.64051066878275\n",
      "在第951步，我们获得了函数 f(rm) = 4.615591608610569 * rm + -6.131354317043998, 此时loss是: 53.63568258607823\n",
      "在第952步，我们获得了函数 f(rm) = 4.6166704915986525 * rm + -6.138217219049831, 此时loss是: 53.630856825134444\n",
      "在第953步，我们获得了函数 f(rm) = 4.617749115145301 * rm + -6.145078470718083, 此时loss是: 53.62603338483498\n",
      "在第954步，我们获得了函数 f(rm) = 4.6188274793129045 * rm + -6.151938072445616, 此时loss是: 53.621212264063736\n",
      "在第955步，我们获得了函数 f(rm) = 4.619905584163836 * rm + -6.158796024629194, 此时loss是: 53.61639346170532\n",
      "在第956步，我们获得了函数 f(rm) = 4.620983429760452 * rm + -6.165652327665488, 此时loss是: 53.61157697664498\n",
      "在第957步，我们获得了函数 f(rm) = 4.622061016165098 * rm + -6.172506981951071, 此时loss是: 53.606762807768185\n",
      "在第958步，我们获得了函数 f(rm) = 4.623138343440103 * rm + -6.179359987882422, 此时loss是: 53.60195095396122\n",
      "在第959步，我们获得了函数 f(rm) = 4.624215411647779 * rm + -6.1862113458559245, 此时loss是: 53.59714141411065\n",
      "在第960步，我们获得了函数 f(rm) = 4.625292220850425 * rm + -6.193061056267866, 此时loss是: 53.59233418710392\n",
      "在第961步，我们获得了函数 f(rm) = 4.626368771110325 * rm + -6.199909119514441, 此时loss是: 53.58752927182871\n",
      "在第962步，我们获得了函数 f(rm) = 4.627445062489747 * rm + -6.2067555359917455, 此时loss是: 53.582726667173375\n",
      "在第963步，我们获得了函数 f(rm) = 4.628521095050945 * rm + -6.213600306095782, 此时loss是: 53.57792637202663\n",
      "在第964步，我们获得了函数 f(rm) = 4.629596868856157 * rm + -6.220443430222459, 此时loss是: 53.573128385278075\n",
      "在第965步，我们获得了函数 f(rm) = 4.630672383967608 * rm + -6.227284908767587, 此时loss是: 53.56833270581759\n",
      "在第966步，我们获得了函数 f(rm) = 4.631747640447504 * rm + -6.234124742126883, 此时loss是: 53.563539332535456\n",
      "在第967步，我们获得了函数 f(rm) = 4.632822638358041 * rm + -6.240962930695969, 此时loss是: 53.55874826432284\n",
      "在第968步，我们获得了函数 f(rm) = 4.633897377761397 * rm + -6.247799474870371, 此时loss是: 53.55395950007119\n",
      "在第969步，我们获得了函数 f(rm) = 4.634971858719736 * rm + -6.25463437504552, 此时loss是: 53.549173038672606\n",
      "在第970步，我们获得了函数 f(rm) = 4.636046081295207 * rm + -6.261467631616753, 此时loss是: 53.54438887901959\n",
      "在第971步，我们获得了函数 f(rm) = 4.637120045549944 * rm + -6.268299244979311, 此时loss是: 53.5396070200054\n",
      "在第972步，我们获得了函数 f(rm) = 4.638193751546066 * rm + -6.27512921552834, 此时loss是: 53.53482746052355\n",
      "在第973步，我们获得了函数 f(rm) = 4.639267199345675 * rm + -6.281957543658891, 此时loss是: 53.53005019946834\n",
      "在第974步，我们获得了函数 f(rm) = 4.640340389010864 * rm + -6.28878422976592, 此时loss是: 53.52527523573439\n",
      "在第975步，我们获得了函数 f(rm) = 4.641413320603704 * rm + -6.295609274244288, 此时loss是: 53.52050256821702\n",
      "在第976步，我们获得了函数 f(rm) = 4.642485994186255 * rm + -6.3024326774887625, 此时loss是: 53.51573219581199\n",
      "在第977步，我们获得了函数 f(rm) = 4.643558409820561 * rm + -6.309254439894013, 此时loss是: 53.51096411741558\n",
      "在第978步，我们获得了函数 f(rm) = 4.644630567568653 * rm + -6.316074561854616, 此时loss是: 53.506198331924665\n",
      "在第979步，我们获得了函数 f(rm) = 4.645702467492544 * rm + -6.3228930437650535, 此时loss是: 53.50143483823662\n",
      "在第980步，我们获得了函数 f(rm) = 4.646774109654234 * rm + -6.329709886019712, 此时loss是: 53.49667363524936\n",
      "在第981步，我们获得了函数 f(rm) = 4.647845494115708 * rm + -6.336525089012883, 此时loss是: 53.49191472186129\n",
      "在第982步，我们获得了函数 f(rm) = 4.648916620938935 * rm + -6.343338653138764, 此时loss是: 53.487158096971314\n",
      "在第983步，我们获得了函数 f(rm) = 4.64998749018587 * rm + -6.350150578791456, 此时loss是: 53.48240375947908\n",
      "在第984步，我们获得了函数 f(rm) = 4.651058101918453 * rm + -6.356960866364967, 此时loss是: 53.4776517082844\n",
      "在第985步，我们获得了函数 f(rm) = 4.652128456198611 * rm + -6.36376951625321, 此时loss是: 53.47290194228803\n",
      "在第986步，我们获得了函数 f(rm) = 4.6531985530882505 * rm + -6.370576528850004, 此时loss是: 53.468154460390856\n",
      "在第987步，我们获得了函数 f(rm) = 4.65426839264927 * rm + -6.377381904549069, 此时loss是: 53.463409261494675\n",
      "在第988步，我们获得了函数 f(rm) = 4.6553379749435475 * rm + -6.384185643744036, 此时loss是: 53.458666344501495\n",
      "在第989步，我们获得了函数 f(rm) = 4.65640730003295 * rm + -6.390987746828438, 此时loss是: 53.453925708314024\n",
      "在第990步，我们获得了函数 f(rm) = 4.657476367979328 * rm + -6.397788214195715, 此时loss是: 53.44918735183542\n",
      "在第991步，我们获得了函数 f(rm) = 4.658545178844517 * rm + -6.40458704623921, 此时loss是: 53.44445127396954\n",
      "在第992步，我们获得了函数 f(rm) = 4.659613732690338 * rm + -6.411384243352174, 此时loss是: 53.43971747362042\n",
      "在第993步，我们获得了函数 f(rm) = 4.660682029578597 * rm + -6.418179805927762, 此时loss是: 53.434985949692894\n",
      "在第994步，我们获得了函数 f(rm) = 4.661750069571085 * rm + -6.424973734359036, 此时loss是: 53.43025670109236\n",
      "在第995步，我们获得了函数 f(rm) = 4.662817852729579 * rm + -6.431766029038962, 此时loss是: 53.42552972672457\n",
      "在第996步，我们获得了函数 f(rm) = 4.663885379115839 * rm + -6.438556690360411, 此时loss是: 53.42080502549587\n",
      "在第997步，我们获得了函数 f(rm) = 4.664952648791613 * rm + -6.445345718716161, 此时loss是: 53.41608259631317\n",
      "在第998步，我们获得了函数 f(rm) = 4.666019661818632 * rm + -6.452133114498895, 此时loss是: 53.411362438083884\n",
      "在第999步，我们获得了函数 f(rm) = 4.667086418258613 * rm + -6.458918878101201, 此时loss是: 53.406644549715814\n",
      "在第1000步，我们获得了函数 f(rm) = 4.668152918173258 * rm + -6.465703009915575, 此时loss是: 53.40192893011762\n",
      "在第1001步，我们获得了函数 f(rm) = 4.669219161624255 * rm + -6.472485510334414, 此时loss是: 53.397215578198136\n",
      "在第1002步，我们获得了函数 f(rm) = 4.670285148673276 * rm + -6.479266379750024, 此时loss是: 53.39250449286691\n",
      "在第1003步，我们获得了函数 f(rm) = 4.671350879381978 * rm + -6.486045618554618, 此时loss是: 53.387795673034\n",
      "在第1004步，我们获得了函数 f(rm) = 4.672416353812005 * rm + -6.4928232271403115, 此时loss是: 53.38308911760981\n",
      "在第1005步，我们获得了函数 f(rm) = 4.673481572024983 * rm + -6.499599205899127, 此时loss是: 53.37838482550566\n",
      "在第1006步，我们获得了函数 f(rm) = 4.674546534082526 * rm + -6.506373555222992, 此时loss是: 53.37368279563292\n",
      "在第1007步，我们获得了函数 f(rm) = 4.6756112400462335 * rm + -6.513146275503741, 此时loss是: 53.36898302690386\n",
      "在第1008步，我们获得了函数 f(rm) = 4.676675689977687 * rm + -6.519917367133114, 此时loss是: 53.36428551823105\n",
      "在第1009步，我们获得了函数 f(rm) = 4.677739883938456 * rm + -6.526686830502755, 此时loss是: 53.359590268527704\n",
      "在第1010步，我们获得了函数 f(rm) = 4.678803821990094 * rm + -6.533454666004217, 此时loss是: 53.35489727670741\n",
      "在第1011步，我们获得了函数 f(rm) = 4.679867504194142 * rm + -6.5402208740289565, 此时loss是: 53.35020654168458\n",
      "在第1012步，我们获得了函数 f(rm) = 4.680930930612122 * rm + -6.546985454968337, 此时loss是: 53.345518062373785\n",
      "在第1013步，我们获得了函数 f(rm) = 4.681994101305543 * rm + -6.553748409213627, 此时loss是: 53.34083183769039\n",
      "在第1014步，我们获得了函数 f(rm) = 4.683057016335902 * rm + -6.560509737156001, 此时loss是: 53.33614786655008\n",
      "在第1015步，我们获得了函数 f(rm) = 4.684119675764677 * rm + -6.56726943918654, 此时loss是: 53.331466147869165\n",
      "在第1016步，我们获得了函数 f(rm) = 4.685182079653335 * rm + -6.574027515696231, 此时loss是: 53.326786680564474\n",
      "在第1017步，我们获得了函数 f(rm) = 4.686244228063324 * rm + -6.580783967075966, 此时loss是: 53.32210946355346\n",
      "在第1018步，我们获得了函数 f(rm) = 4.687306121056081 * rm + -6.587538793716544, 此时loss是: 53.31743449575386\n",
      "在第1019步，我们获得了函数 f(rm) = 4.688367758693026 * rm + -6.59429199600867, 此时loss是: 53.31276177608412\n",
      "在第1020步，我们获得了函数 f(rm) = 4.689429141035566 * rm + -6.601043574342955, 此时loss是: 53.30809130346311\n",
      "在第1021步，我们获得了函数 f(rm) = 4.690490268145091 * rm + -6.607793529109915, 此时loss是: 53.303423076810276\n",
      "在第1022步，我们获得了函数 f(rm) = 4.691551140082978 * rm + -6.6145418606999735, 此时loss是: 53.298757095045474\n",
      "在第1023步，我们获得了函数 f(rm) = 4.692611756910589 * rm + -6.621288569503459, 此时loss是: 53.29409335708936\n",
      "在第1024步，我们获得了函数 f(rm) = 4.69367211868927 * rm + -6.628033655910607, 此时loss是: 53.28943186186275\n",
      "在第1025步，我们获得了函数 f(rm) = 4.6947322254803545 * rm + -6.634777120311559, 此时loss是: 53.28477260828723\n",
      "在第1026步，我们获得了函数 f(rm) = 4.69579207734516 * rm + -6.641518963096361, 此时loss是: 53.28011559528478\n",
      "在第1027步，我们获得了函数 f(rm) = 4.696851674344988 * rm + -6.648259184654969, 此时loss是: 53.27546082177784\n",
      "在第1028步，我们获得了函数 f(rm) = 4.697911016541127 * rm + -6.654997785377242, 此时loss是: 53.27080828668967\n",
      "在第1029步，我们获得了函数 f(rm) = 4.69897010399485 * rm + -6.661734765652946, 此时loss是: 53.26615798894378\n",
      "在第1030步，我们获得了函数 f(rm) = 4.700028936767415 * rm + -6.668470125871754, 此时loss是: 53.261509927464154\n",
      "在第1031步，我们获得了函数 f(rm) = 4.701087514920068 * rm + -6.675203866423244, 此时loss是: 53.256864101175566\n",
      "在第1032步，我们获得了函数 f(rm) = 4.702145838514036 * rm + -6.681935987696901, 此时loss是: 53.25222050900292\n",
      "在第1033步，我们获得了函数 f(rm) = 4.703203907610534 * rm + -6.6886664900821176, 此时loss是: 53.24757914987206\n",
      "在第1034步，我们获得了函数 f(rm) = 4.70426172227076 * rm + -6.69539537396819, 此时loss是: 53.242940022709035\n",
      "在第1035步，我们获得了函数 f(rm) = 4.705319282555902 * rm + -6.702122639744323, 此时loss是: 53.23830312644064\n",
      "在第1036步，我们获得了函数 f(rm) = 4.706376588527127 * rm + -6.708848287799628, 此时loss是: 53.23366845999395\n",
      "在第1037步，我们获得了函数 f(rm) = 4.7074336402455925 * rm + -6.715572318523121, 此时loss是: 53.22903602229672\n",
      "在第1038步，我们获得了函数 f(rm) = 4.708490437772438 * rm + -6.722294732303725, 此时loss是: 53.22440581227719\n",
      "在第1039步，我们获得了函数 f(rm) = 4.70954698116879 * rm + -6.729015529530271, 此时loss是: 53.21977782886406\n",
      "在第1040步，我们获得了函数 f(rm) = 4.710603270495761 * rm + -6.735734710591495, 此时loss是: 53.215152070986576\n",
      "在第1041步，我们获得了函数 f(rm) = 4.711659305814446 * rm + -6.7424522758760395, 此时loss是: 53.21052853757458\n",
      "在第1042步，我们获得了函数 f(rm) = 4.712715087185927 * rm + -6.749168225772455, 此时loss是: 53.205907227558214\n",
      "在第1043步，我们获得了函数 f(rm) = 4.713770614671272 * rm + -6.755882560669197, 此时loss是: 53.20128813986848\n",
      "在第1044步，我们获得了函数 f(rm) = 4.714825888331534 * rm + -6.762595280954628, 此时loss是: 53.196671273436564\n",
      "在第1045步，我们获得了函数 f(rm) = 4.71588090822775 * rm + -6.769306387017017, 此时loss是: 53.192056627194304\n",
      "在第1046步，我们获得了函数 f(rm) = 4.716935674420943 * rm + -6.77601587924454, 此时loss是: 53.18744420007404\n",
      "在第1047步，我们获得了函数 f(rm) = 4.717990186972123 * rm + -6.782723758025281, 此时loss是: 53.182833991008636\n",
      "在第1048步，我们获得了函数 f(rm) = 4.719044445942282 * rm + -6.789430023747227, 此时loss是: 53.17822599893138\n",
      "在第1049步，我们获得了函数 f(rm) = 4.7200984513924 * rm + -6.796134676798275, 此时loss是: 53.173620222776336\n",
      "在第1050步，我们获得了函数 f(rm) = 4.721152203383442 * rm + -6.802837717566227, 此时loss是: 53.16901666147776\n",
      "在第1051步，我们获得了函数 f(rm) = 4.722205701976357 * rm + -6.809539146438793, 此时loss是: 53.164415313970615\n",
      "在第1052步，我们获得了函数 f(rm) = 4.723258947232082 * rm + -6.816238963803588, 此时loss是: 53.1598161791902\n",
      "在第1053步，我们获得了函数 f(rm) = 4.7243119392115345 * rm + -6.822937170048137, 此时loss是: 53.155219256072606\n",
      "在第1054步，我们获得了函数 f(rm) = 4.725364677975623 * rm + -6.829633765559868, 此时loss是: 53.15062454355416\n",
      "在第1055步，我们获得了函数 f(rm) = 4.726417163585238 * rm + -6.836328750726119, 此时loss是: 53.14603204057193\n",
      "在第1056步，我们获得了函数 f(rm) = 4.727469396101256 * rm + -6.843022125934132, 此时loss是: 53.14144174606326\n",
      "在第1057步，我们获得了函数 f(rm) = 4.728521375584539 * rm + -6.849713891571058, 此时loss是: 53.13685365896612\n",
      "在第1058步，我们获得了函数 f(rm) = 4.729573102095935 * rm + -6.856404048023954, 此时loss是: 53.13226777821911\n",
      "在第1059步，我们获得了函数 f(rm) = 4.730624575696275 * rm + -6.863092595679785, 此时loss是: 53.12768410276117\n",
      "在第1060步，我们获得了函数 f(rm) = 4.731675796446379 * rm + -6.86977953492542, 此时loss是: 53.12310263153171\n",
      "在第1061步，我们获得了函数 f(rm) = 4.73272676440705 * rm + -6.876464866147638, 此时loss是: 53.11852336347094\n",
      "在第1062步，我们获得了函数 f(rm) = 4.733777479639077 * rm + -6.883148589733126, 此时loss是: 53.11394629751918\n",
      "在第1063步，我们获得了函数 f(rm) = 4.734827942203232 * rm + -6.889830706068473, 此时loss是: 53.10937143261763\n",
      "在第1064步，我们获得了函数 f(rm) = 4.735878152160278 * rm + -6.89651121554018, 此时loss是: 53.10479876770773\n",
      "在第1065步，我们获得了函数 f(rm) = 4.7369281095709574 * rm + -6.903190118534653, 此时loss是: 53.10022830173155\n",
      "在第1066步，我们获得了函数 f(rm) = 4.737977814496002 * rm + -6.909867415438204, 此时loss是: 53.09566003363175\n",
      "在第1067步，我们获得了函数 f(rm) = 4.7390272669961275 * rm + -6.916543106637055, 此时loss是: 53.09109396235126\n",
      "在第1068步，我们获得了函数 f(rm) = 4.740076467132035 * rm + -6.923217192517332, 此时loss是: 53.08653008683372\n",
      "在第1069步，我们获得了函数 f(rm) = 4.74112541496441 * rm + -6.929889673465071, 此时loss是: 53.081968406023236\n",
      "在第1070步，我们获得了函数 f(rm) = 4.742174110553926 * rm + -6.936560549866212, 此时loss是: 53.07740891886439\n",
      "在第1071步，我们获得了函数 f(rm) = 4.74322255396124 * rm + -6.9432298221066056, 此时loss是: 53.072851624302274\n",
      "在第1072步，我们获得了函数 f(rm) = 4.744270745246994 * rm + -6.949897490572007, 此时loss是: 53.06829652128249\n",
      "在第1073步，我们获得了函数 f(rm) = 4.745318684471818 * rm + -6.95656355564808, 此时loss是: 53.063743608751125\n",
      "在第1074步，我们获得了函数 f(rm) = 4.746366371696324 * rm + -6.963228017720394, 此时loss是: 53.05919288565492\n",
      "在第1075步，我们获得了函数 f(rm) = 4.747413806981111 * rm + -6.969890877174429, 此时loss是: 53.0546443509409\n",
      "在第1076步，我们获得了函数 f(rm) = 4.748460990386764 * rm + -6.976552134395569, 此时loss是: 53.0500980035567\n",
      "在第1077步，我们获得了函数 f(rm) = 4.749507921973854 * rm + -6.983211789769107, 此时loss是: 53.045553842450545\n",
      "在第1078步，我们获得了函数 f(rm) = 4.750554601802935 * rm + -6.989869843680243, 此时loss是: 53.041011866571026\n",
      "在第1079步，我们获得了函数 f(rm) = 4.751601029934548 * rm + -6.996526296514084, 此时loss是: 53.036472074867234\n",
      "在第1080步，我们获得了函数 f(rm) = 4.75264720642922 * rm + -7.003181148655645, 此时loss是: 53.031934466288945\n",
      "在第1081步，我们获得了函数 f(rm) = 4.753693131347462 * rm + -7.009834400489847, 此时loss是: 53.02739903978629\n",
      "在第1082步，我们获得了函数 f(rm) = 4.754738804749771 * rm + -7.016486052401521, 此时loss是: 53.022865794309936\n",
      "在第1083步，我们获得了函数 f(rm) = 4.7557842266966315 * rm + -7.0231361047754035, 此时loss是: 53.018334728810935\n",
      "在第1084步，我们获得了函数 f(rm) = 4.7568293972485085 * rm + -7.029784557996138, 此时loss是: 53.01380584224116\n",
      "在第1085步，我们获得了函数 f(rm) = 4.757874316465857 * rm + -7.0364314124482785, 此时loss是: 53.00927913355266\n",
      "在第1086步，我们获得了函数 f(rm) = 4.758918984409117 * rm + -7.0430766685162824, 此时loss是: 53.00475460169817\n",
      "在第1087步，我们获得了函数 f(rm) = 4.7599634011387115 * rm + -7.049720326584518, 此时loss是: 53.00023224563093\n",
      "在第1088步，我们获得了函数 f(rm) = 4.761007566715052 * rm + -7.05636238703726, 此时loss是: 52.9957120643045\n",
      "在第1089步，我们获得了函数 f(rm) = 4.762051481198532 * rm + -7.06300285025869, 此时loss是: 52.9911940566732\n",
      "在第1090步，我们获得了函数 f(rm) = 4.763095144649533 * rm + -7.069641716632899, 此时loss是: 52.986678221691676\n",
      "在第1091步，我们获得了函数 f(rm) = 4.764138557128422 * rm + -7.076278986543882, 此时loss是: 52.98216455831512\n",
      "在第1092步，我们获得了函数 f(rm) = 4.76518171869555 * rm + -7.082914660375547, 此时loss是: 52.97765306549929\n",
      "在第1093步，我们获得了函数 f(rm) = 4.766224629411255 * rm + -7.089548738511705, 此时loss是: 52.97314374220035\n",
      "在第1094步，我们获得了函数 f(rm) = 4.767267289335859 * rm + -7.096181221336076, 此时loss是: 52.96863658737498\n",
      "在第1095步，我们获得了函数 f(rm) = 4.768309698529671 * rm + -7.10281210923229, 此时loss是: 52.96413159998038\n",
      "在第1096步，我们获得了函数 f(rm) = 4.7693518570529845 * rm + -7.109441402583882, 此时loss是: 52.959628778974356\n",
      "在第1097步，我们获得了函数 f(rm) = 4.770393764966079 * rm + -7.116069101774296, 此时loss是: 52.95512812331501\n",
      "在第1098步，我们获得了函数 f(rm) = 4.77143542232922 * rm + -7.122695207186884, 此时loss是: 52.95062963196121\n",
      "在第1099步，我们获得了函数 f(rm) = 4.772476829202656 * rm + -7.129319719204904, 此时loss是: 52.94613330387202\n",
      "在第1100步，我们获得了函数 f(rm) = 4.773517985646624 * rm + -7.1359426382115245, 此时loss是: 52.94163913800723\n",
      "在第1101步，我们获得了函数 f(rm) = 4.7745588917213455 * rm + -7.14256396458982, 此时loss是: 52.93714713332697\n",
      "在第1102步，我们获得了函数 f(rm) = 4.775599547487027 * rm + -7.149183698722773, 此时loss是: 52.93265728879206\n",
      "在第1103步，我们获得了函数 f(rm) = 4.776639953003861 * rm + -7.155801840993275, 此时loss是: 52.92816960336367\n",
      "在第1104步，我们获得了函数 f(rm) = 4.777680108332025 * rm + -7.162418391784126, 此时loss是: 52.923684076003525\n",
      "在第1105步，我们获得了函数 f(rm) = 4.778720013531683 * rm + -7.1690333514780304, 此时loss是: 52.919200705673866\n",
      "在第1106步，我们获得了函数 f(rm) = 4.779759668662984 * rm + -7.175646720457604, 此时loss是: 52.914719491337266\n",
      "在第1107步，我们获得了函数 f(rm) = 4.780799073786062 * rm + -7.1822584991053695, 此时loss是: 52.910240431957135\n",
      "在第1108步，我们获得了函数 f(rm) = 4.781838228961037 * rm + -7.188868687803757, 此时loss是: 52.90576352649703\n",
      "在第1109步，我们获得了函数 f(rm) = 4.782877134248015 * rm + -7.195477286935106, 此时loss是: 52.901288773921316\n",
      "在第1110步，我们获得了函数 f(rm) = 4.783915789707088 * rm + -7.2020842968816625, 此时loss是: 52.896816173194466\n",
      "在第1111步，我们获得了函数 f(rm) = 4.78495419539833 * rm + -7.208689718025582, 此时loss是: 52.89234572328194\n",
      "在第1112步，我们获得了函数 f(rm) = 4.785992351381807 * rm + -7.215293550748927, 此时loss是: 52.8878774231493\n",
      "在第1113步，我们获得了函数 f(rm) = 4.787030257717563 * rm + -7.221895795433669, 此时loss是: 52.88341127176275\n",
      "在第1114步，我们获得了函数 f(rm) = 4.788067914465634 * rm + -7.2284964524616875, 此时loss是: 52.87894726808895\n",
      "在第1115步，我们获得了函数 f(rm) = 4.789105321686038 * rm + -7.235095522214769, 此时loss是: 52.874485411095186\n",
      "在第1116步，我们获得了函数 f(rm) = 4.790142479438779 * rm + -7.241693005074609, 此时loss是: 52.87002569974914\n",
      "在第1117步，我们获得了函数 f(rm) = 4.791179387783847 * rm + -7.2482889014228125, 此时loss是: 52.865568133018975\n",
      "在第1118步，我们获得了函数 f(rm) = 4.79221604678122 * rm + -7.254883211640891, 此时loss是: 52.86111270987327\n",
      "在第1119步，我们获得了函数 f(rm) = 4.793252456490856 * rm + -7.261475936110265, 此时loss是: 52.85665942928139\n",
      "在第1120步，我们获得了函数 f(rm) = 4.794288616972703 * rm + -7.2680670752122625, 此时loss是: 52.85220829021287\n",
      "在第1121步，我们获得了函数 f(rm) = 4.795324528286693 * rm + -7.2746566293281205, 此时loss是: 52.8477592916379\n",
      "在第1122步，我们获得了函数 f(rm) = 4.796360190492746 * rm + -7.281244598838985, 此时loss是: 52.843312432527306\n",
      "在第1123步，我们获得了函数 f(rm) = 4.797395603650763 * rm + -7.287830984125908, 此时loss是: 52.838867711852046\n",
      "在第1124步，我们获得了函数 f(rm) = 4.798430767820634 * rm + -7.2944157855698535, 此时loss是: 52.83442512858382\n",
      "在第1125步，我们获得了函数 f(rm) = 4.799465683062236 * rm + -7.3009990035516905, 此时loss是: 52.82998468169477\n",
      "在第1126步，我们获得了函数 f(rm) = 4.800500349435425 * rm + -7.3075806384521975, 此时loss是: 52.82554637015757\n",
      "在第1127步，我们获得了函数 f(rm) = 4.80153476700005 * rm + -7.314160690652062, 此时loss是: 52.82111019294543\n",
      "在第1128步，我们获得了函数 f(rm) = 4.802568935815942 * rm + -7.32073916053188, 此时loss是: 52.816676149031885\n",
      "在第1129步，我们获得了函数 f(rm) = 4.803602855942917 * rm + -7.327316048472155, 此时loss是: 52.812244237391084\n",
      "在第1130步，我们获得了函数 f(rm) = 4.80463652744078 * rm + -7.3338913548533, 此时loss是: 52.80781445699768\n",
      "在第1131步，我们获得了函数 f(rm) = 4.805669950369317 * rm + -7.340465080055636, 此时loss是: 52.80338680682676\n",
      "在第1132步，我们获得了函数 f(rm) = 4.806703124788304 * rm + -7.347037224459393, 此时loss是: 52.79896128585383\n",
      "在第1133步，我们获得了函数 f(rm) = 4.8077360507575 * rm + -7.353607788444708, 此时loss是: 52.794537893055136\n",
      "在第1134步，我们获得了函数 f(rm) = 4.808768728336649 * rm + -7.360176772391629, 此时loss是: 52.79011662740717\n",
      "在第1135步，我们获得了函数 f(rm) = 4.8098011575854835 * rm + -7.36674417668011, 此时loss是: 52.78569748788712\n",
      "在第1136步，我们获得了函数 f(rm) = 4.81083333856372 * rm + -7.373310001690017, 此时loss是: 52.781280473472485\n",
      "在第1137步，我们获得了函数 f(rm) = 4.81186527133106 * rm + -7.379874247801122, 此时loss是: 52.776865583141245\n",
      "在第1138步，我们获得了函数 f(rm) = 4.812896955947191 * rm + -7.386436915393106, 此时loss是: 52.77245281587214\n",
      "在第1139步，我们获得了函数 f(rm) = 4.813928392471787 * rm + -7.392998004845559, 此时loss是: 52.768042170644065\n",
      "在第1140步，我们获得了函数 f(rm) = 4.8149595809645085 * rm + -7.399557516537979, 此时loss是: 52.76363364643667\n",
      "在第1141步，我们获得了函数 f(rm) = 4.8159905214849985 * rm + -7.406115450849775, 此时loss是: 52.759227242229926\n",
      "在第1142步，我们获得了函数 f(rm) = 4.817021214092887 * rm + -7.412671808160263, 此时loss是: 52.754822957004336\n",
      "在第1143步，我们获得了函数 f(rm) = 4.818051658847792 * rm + -7.419226588848668, 此时loss是: 52.75042078974095\n",
      "在第1144步，我们获得了函数 f(rm) = 4.819081855809314 * rm + -7.425779793294123, 此时loss是: 52.74602073942122\n",
      "在第1145步，我们获得了函数 f(rm) = 4.820111805037041 * rm + -7.432331421875672, 此时loss是: 52.74162280502724\n",
      "在第1146步，我们获得了函数 f(rm) = 4.821141506590546 * rm + -7.438881474972265, 此时loss是: 52.737226985541334\n",
      "在第1147步，我们获得了函数 f(rm) = 4.822170960529387 * rm + -7.4454299529627646, 此时loss是: 52.732833279946696\n",
      "在第1148步，我们获得了函数 f(rm) = 4.82320016691311 * rm + -7.451976856225938, 此时loss是: 52.728441687226514\n",
      "在第1149步，我们获得了函数 f(rm) = 4.824229125801243 * rm + -7.458522185140465, 此时loss是: 52.72405220636491\n",
      "在第1150步，我们获得了函数 f(rm) = 4.825257837253304 * rm + -7.465065940084933, 此时loss是: 52.71966483634624\n",
      "在第1151步，我们获得了函数 f(rm) = 4.826286301328793 * rm + -7.4716081214378365, 此时loss是: 52.71527957615547\n",
      "在第1152步，我们获得了函数 f(rm) = 4.827314518087198 * rm + -7.4781487295775815, 此时loss是: 52.71089642477804\n",
      "在第1153步，我们获得了函数 f(rm) = 4.8283424875879914 * rm + -7.484687764882482, 此时loss是: 52.706515381199694\n",
      "在第1154步，我们获得了函数 f(rm) = 4.829370209890633 * rm + -7.491225227730761, 此时loss是: 52.702136444407095\n",
      "在第1155步，我们获得了函数 f(rm) = 4.830397685054566 * rm + -7.497761118500551, 此时loss是: 52.697759613386886\n",
      "在第1156步，我们获得了函数 f(rm) = 4.8314249131392195 * rm + -7.504295437569894, 此时loss是: 52.693384887126555\n",
      "在第1157步，我们获得了函数 f(rm) = 4.832451894204011 * rm + -7.510828185316739, 此时loss是: 52.68901226461383\n",
      "在第1158步，我们获得了函数 f(rm) = 4.833478628308342 * rm + -7.517359362118946, 此时loss是: 52.684641744837165\n",
      "在第1159步，我们获得了函数 f(rm) = 4.834505115511598 * rm + -7.523888968354284, 此时loss是: 52.68027332678531\n",
      "在第1160步，我们获得了函数 f(rm) = 4.835531355873152 * rm + -7.53041700440043, 此时loss是: 52.675907009447556\n",
      "在第1161步，我们获得了函数 f(rm) = 4.836557349452364 * rm + -7.536943470634972, 此时loss是: 52.67154279181378\n",
      "在第1162步，我们获得了函数 f(rm) = 4.8375830963085775 * rm + -7.543468367435405, 此时loss是: 52.66718067287426\n",
      "在第1163步，我们获得了函数 f(rm) = 4.838608596501123 * rm + -7.549991695179135, 此时loss是: 52.662820651619704\n",
      "在第1164步，我们获得了函数 f(rm) = 4.8396338500893155 * rm + -7.556513454243476, 此时loss是: 52.65846272704132\n",
      "在第1165步，我们获得了函数 f(rm) = 4.840658857132457 * rm + -7.563033645005653, 此时loss是: 52.654106898131026\n",
      "在第1166步，我们获得了函数 f(rm) = 4.841683617689835 * rm + -7.569552267842798, 此时loss是: 52.649753163880796\n",
      "在第1167步，我们获得了函数 f(rm) = 4.8427081318207215 * rm + -7.576069323131955, 此时loss是: 52.64540152328352\n",
      "在第1168步，我们获得了函数 f(rm) = 4.843732399584377 * rm + -7.582584811250075, 此时loss是: 52.641051975332324\n",
      "在第1169步，我们获得了函数 f(rm) = 4.844756421040044 * rm + -7.589098732574018, 此时loss是: 52.636704519020874\n",
      "在第1170步，我们获得了函数 f(rm) = 4.845780196246954 * rm + -7.595611087480556, 此时loss是: 52.63235915334335\n",
      "在第1171步，我们获得了函数 f(rm) = 4.846803725264323 * rm + -7.602121876346368, 此时loss是: 52.62801587729441\n",
      "在第1172步，我们获得了函数 f(rm) = 4.847827008151351 * rm + -7.608631099548044, 此时loss是: 52.62367468986917\n",
      "在第1173步，我们获得了函数 f(rm) = 4.848850044967228 * rm + -7.615138757462083, 此时loss是: 52.61933559006315\n",
      "在第1174步，我们获得了函数 f(rm) = 4.849872835771126 * rm + -7.621644850464893, 此时loss是: 52.61499857687257\n",
      "在第1175步，我们获得了函数 f(rm) = 4.8508953806222035 * rm + -7.628149378932791, 此时loss是: 52.610663649294\n",
      "在第1176步，我们获得了函数 f(rm) = 4.851917679579607 * rm + -7.634652343242006, 此时loss是: 52.6063308063244\n",
      "在第1177步，我们获得了函数 f(rm) = 4.852939732702466 * rm + -7.641153743768673, 此时loss是: 52.60200004696128\n",
      "在第1178步，我们获得了函数 f(rm) = 4.853961540049897 * rm + -7.64765358088884, 此时loss是: 52.59767137020288\n",
      "在第1179步，我们获得了函数 f(rm) = 4.854983101681002 * rm + -7.654151854978462, 此时loss是: 52.5933447750476\n",
      "在第1180步，我们获得了函数 f(rm) = 4.85600441765487 * rm + -7.660648566413403, 此时loss是: 52.58902026049422\n",
      "在第1181步，我们获得了函数 f(rm) = 4.857025488030573 * rm + -7.66714371556944, 此时loss是: 52.58469782554242\n",
      "在第1182步，我们获得了函数 f(rm) = 4.858046312867172 * rm + -7.673637302822258, 此时loss是: 52.58037746919212\n",
      "在第1183步，我们获得了函数 f(rm) = 4.859066892223712 * rm + -7.680129328547451, 此时loss是: 52.57605919044374\n",
      "在第1184步，我们获得了函数 f(rm) = 4.860087226159224 * rm + -7.686619793120522, 此时loss是: 52.57174298829817\n",
      "在第1185步，我们获得了函数 f(rm) = 4.861107314732724 * rm + -7.693108696916886, 此时loss是: 52.567428861756795\n",
      "在第1186步，我们获得了函数 f(rm) = 4.862127158003217 * rm + -7.6995960403118655, 此时loss是: 52.563116809821494\n",
      "在第1187步，我们获得了函数 f(rm) = 4.863146756029689 * rm + -7.7060818236806945, 此时loss是: 52.55880683149473\n",
      "在第1188步，我们获得了函数 f(rm) = 4.864166108871117 * rm + -7.712566047398516, 此时loss是: 52.554498925779015\n",
      "在第1189步，我们获得了函数 f(rm) = 4.865185216586459 * rm + -7.719048711840382, 此时loss是: 52.550193091678004\n",
      "在第1190步，我们获得了函数 f(rm) = 4.866204079234662 * rm + -7.725529817381257, 此时loss是: 52.54588932819534\n",
      "在第1191步，我们获得了函数 f(rm) = 4.8672226968746575 * rm + -7.732009364396012, 此时loss是: 52.541587634335315\n",
      "在第1192步，我们获得了函数 f(rm) = 4.868241069565364 * rm + -7.738487353259429, 此时loss是: 52.53728800910255\n",
      "在第1193步，我们获得了函数 f(rm) = 4.869259197365684 * rm + -7.744963784346201, 此时loss是: 52.532990451502464\n",
      "在第1194步，我们获得了函数 f(rm) = 4.870277080334508 * rm + -7.75143865803093, 此时loss是: 52.52869496054065\n",
      "在第1195步，我们获得了函数 f(rm) = 4.871294718530709 * rm + -7.757911974688127, 此时loss是: 52.5244015352233\n",
      "在第1196步，我们获得了函数 f(rm) = 4.872312112013151 * rm + -7.764383734692215, 此时loss是: 52.52011017455712\n",
      "在第1197步，我们获得了函数 f(rm) = 4.873329260840679 * rm + -7.770853938417526, 此时loss是: 52.5158208775492\n",
      "在第1198步，我们获得了函数 f(rm) = 4.874346165072125 * rm + -7.777322586238301, 此时loss是: 52.51153364320709\n",
      "在第1199步，我们获得了函数 f(rm) = 4.8753628247663094 * rm + -7.783789678528692, 此时loss是: 52.50724847053905\n",
      "在第1200步，我们获得了函数 f(rm) = 4.876379239982035 * rm + -7.7902552156627625, 此时loss是: 52.50296535855346\n",
      "在第1201步，我们获得了函数 f(rm) = 4.877395410778094 * rm + -7.7967191980144825, 此时loss是: 52.49868430625956\n",
      "在第1202步，我们获得了函数 f(rm) = 4.878411337213262 * rm + -7.803181625957735, 此时loss是: 52.49440531266673\n",
      "在第1203步，我们获得了函数 f(rm) = 4.879427019346299 * rm + -7.809642499866311, 此时loss是: 52.490128376785016\n",
      "在第1204步，我们获得了函数 f(rm) = 4.880442457235955 * rm + -7.816101820113914, 此时loss是: 52.48585349762479\n",
      "在第1205步，我们获得了函数 f(rm) = 4.881457650940964 * rm + -7.822559587074156, 此时loss是: 52.48158067419722\n",
      "在第1206步，我们获得了函数 f(rm) = 4.882472600520044 * rm + -7.82901580112056, 此时loss是: 52.47730990551362\n",
      "在第1207步，我们获得了函数 f(rm) = 4.883487306031902 * rm + -7.835470462626558, 此时loss是: 52.47304119058578\n",
      "在第1208步，我们获得了函数 f(rm) = 4.8845017675352285 * rm + -7.841923571965493, 此时loss是: 52.46877452842626\n",
      "在第1209步，我们获得了函数 f(rm) = 4.8855159850887 * rm + -7.848375129510619, 此时loss是: 52.46450991804777\n",
      "在第1210步，我们获得了函数 f(rm) = 4.886529958750981 * rm + -7.854825135635098, 此时loss是: 52.46024735846375\n",
      "在第1211步，我们获得了函数 f(rm) = 4.88754368858072 * rm + -7.861273590712004, 此时loss是: 52.455986848687814\n",
      "在第1212步，我们获得了函数 f(rm) = 4.888557174636554 * rm + -7.867720495114322, 此时loss是: 52.45172838773447\n",
      "在第1213步，我们获得了函数 f(rm) = 4.889570416977101 * rm + -7.874165849214945, 此时loss是: 52.44747197461836\n",
      "在第1214步，我们获得了函数 f(rm) = 4.890583415660968 * rm + -7.880609653386678, 此时loss是: 52.44321760835471\n",
      "在第1215步，我们获得了函数 f(rm) = 4.89159617074675 * rm + -7.887051908002236, 此时loss是: 52.43896528795917\n",
      "在第1216步，我们获得了函数 f(rm) = 4.892608682293023 * rm + -7.893492613434244, 此时loss是: 52.43471501244808\n",
      "在第1217步，我们获得了函数 f(rm) = 4.893620950358353 * rm + -7.899931770055238, 此时loss是: 52.43046678083783\n",
      "在第1218步，我们获得了函数 f(rm) = 4.89463297500129 * rm + -7.906369378237663, 此时loss是: 52.42622059214569\n",
      "在第1219步，我们获得了函数 f(rm) = 4.895644756280371 * rm + -7.912805438353877, 此时loss是: 52.421976445389184\n",
      "在第1220步，我们获得了函数 f(rm) = 4.896656294254116 * rm + -7.919239950776147, 此时loss是: 52.417734339586495\n",
      "在第1221步，我们获得了函数 f(rm) = 4.897667588981036 * rm + -7.92567291587665, 此时loss是: 52.41349427375602\n",
      "在第1222步，我们获得了函数 f(rm) = 4.8986786405196225 * rm + -7.932104334027473, 此时loss是: 52.409256246916776\n",
      "在第1223步，我们获得了函数 f(rm) = 4.899689448928358 * rm + -7.938534205600615, 此时loss是: 52.405020258088285\n",
      "在第1224步，我们获得了函数 f(rm) = 4.900700014265707 * rm + -7.944962530967986, 此时loss是: 52.40078630629051\n",
      "在第1225步，我们获得了函数 f(rm) = 4.9017103365901225 * rm + -7.951389310501406, 此时loss是: 52.39655439054381\n",
      "在第1226步，我们获得了函数 f(rm) = 4.902720415960042 * rm + -7.957814544572603, 此时loss是: 52.39232450986919\n",
      "在第1227步，我们获得了函数 f(rm) = 4.903730252433888 * rm + -7.964238233553219, 此时loss是: 52.38809666328782\n",
      "在第1228步，我们获得了函数 f(rm) = 4.904739846070072 * rm + -7.970660377814807, 此时loss是: 52.38387084982174\n",
      "在第1229步，我们获得了函数 f(rm) = 4.905749196926989 * rm + -7.977080977728826, 此时loss是: 52.37964706849313\n",
      "在第1230步，我们获得了函数 f(rm) = 4.90675830506302 * rm + -7.98350003366665, 此时loss是: 52.37542531832475\n",
      "在第1231步，我们获得了函数 f(rm) = 4.907767170536535 * rm + -7.989917545999563, 此时loss是: 52.37120559833988\n",
      "在第1232步，我们获得了函数 f(rm) = 4.908775793405884 * rm + -7.996333515098759, 此时loss是: 52.366987907562255\n",
      "在第1233步，我们获得了函数 f(rm) = 4.90978417372941 * rm + -8.002747941335343, 此时loss是: 52.36277224501604\n",
      "在第1234步，我们获得了函数 f(rm) = 4.910792311565436 * rm + -8.00916082508033, 此时loss是: 52.35855860972583\n",
      "在第1235步，我们获得了函数 f(rm) = 4.911800206972275 * rm + -8.015572166704649, 此时loss是: 52.354347000716835\n",
      "在第1236步，我们获得了函数 f(rm) = 4.912807860008225 * rm + -8.021981966579133, 此时loss是: 52.35013741701457\n",
      "在第1237步，我们获得了函数 f(rm) = 4.913815270731567 * rm + -8.028390225074533, 此时loss是: 52.34592985764514\n",
      "在第1238步，我们获得了函数 f(rm) = 4.914822439200573 * rm + -8.034796942561506, 此时loss是: 52.34172432163503\n",
      "在第1239步，我们获得了函数 f(rm) = 4.915829365473497 * rm + -8.041202119410624, 此时loss是: 52.33752080801128\n",
      "在第1240步，我们获得了函数 f(rm) = 4.916836049608581 * rm + -8.047605755992366, 此时loss是: 52.33331931580132\n",
      "在第1241步，我们获得了函数 f(rm) = 4.917842491664052 * rm + -8.054007852677126, 此时loss是: 52.32911984403303\n",
      "在第1242步，我们获得了函数 f(rm) = 4.918848691698124 * rm + -8.060408409835203, 此时loss是: 52.32492239173496\n",
      "在第1243步，我们获得了函数 f(rm) = 4.919854649768997 * rm + -8.066807427836812, 此时loss是: 52.3207269579358\n",
      "在第1244步，我们获得了函数 f(rm) = 4.920860365934855 * rm + -8.073204907052078, 此时loss是: 52.31653354166493\n",
      "在第1245步，我们获得了函数 f(rm) = 4.92186584025387 * rm + -8.079600847851037, 此时loss是: 52.31234214195228\n",
      "在第1246步，我们获得了函数 f(rm) = 4.9228710727842 * rm + -8.085995250603633, 此时loss是: 52.308152757827955\n",
      "在第1247步，我们获得了函数 f(rm) = 4.923876063583988 * rm + -8.092388115679725, 此时loss是: 52.303965388322695\n",
      "在第1248步，我们获得了函数 f(rm) = 4.924880812711363 * rm + -8.098779443449082, 此时loss是: 52.29978003246778\n",
      "在第1249步，我们获得了函数 f(rm) = 4.925885320224442 * rm + -8.105169234281384, 此时loss是: 52.29559668929486\n",
      "在第1250步，我们获得了函数 f(rm) = 4.926889586181325 * rm + -8.11155748854622, 此时loss是: 52.29141535783599\n",
      "在第1251步，我们获得了函数 f(rm) = 4.9278936106400995 * rm + -8.117944206613092, 此时loss是: 52.28723603712379\n",
      "在第1252步，我们获得了函数 f(rm) = 4.928897393658841 * rm + -8.124329388851415, 此时loss是: 52.28305872619136\n",
      "在第1253步，我们获得了函数 f(rm) = 4.929900935295606 * rm + -8.13071303563051, 此时loss是: 52.27888342407224\n",
      "在第1254步，我们获得了函数 f(rm) = 4.930904235608444 * rm + -8.137095147319616, 此时loss是: 52.2747101298003\n",
      "在第1255步，我们获得了函数 f(rm) = 4.9319072946553835 * rm + -8.143475724287878, 此时loss是: 52.270538842410154\n",
      "在第1256步，我们获得了函数 f(rm) = 4.932910112494444 * rm + -8.149854766904353, 此时loss是: 52.26636956093663\n",
      "在第1257步，我们获得了函数 f(rm) = 4.933912689183629 * rm + -8.156232275538011, 此时loss是: 52.26220228441507\n",
      "在第1258步，我们获得了函数 f(rm) = 4.934915024780928 * rm + -8.162608250557732, 此时loss是: 52.25803701188139\n",
      "在第1259步，我们获得了函数 f(rm) = 4.9359171193443165 * rm + -8.168982692332307, 此时loss是: 52.253873742371795\n",
      "在第1260步，我们获得了函数 f(rm) = 4.936918972931757 * rm + -8.17535560123044, 此时loss是: 52.24971247492323\n",
      "在第1261步，我们获得了函数 f(rm) = 4.937920585601198 * rm + -8.181726977620745, 此时loss是: 52.245553208572815\n",
      "在第1262步，我们获得了函数 f(rm) = 4.938921957410574 * rm + -8.188096821871747, 此时loss是: 52.24139594235825\n",
      "在第1263步，我们获得了函数 f(rm) = 4.939923088417803 * rm + -8.194465134351884, 此时loss是: 52.237240675317786\n",
      "在第1264步，我们获得了函数 f(rm) = 4.940923978680793 * rm + -8.200831915429504, 此时loss是: 52.23308740648992\n",
      "在第1265步，我们获得了函数 f(rm) = 4.9419246282574365 * rm + -8.207197165472866, 此时loss是: 52.22893613491379\n",
      "在第1266步，我们获得了函数 f(rm) = 4.942925037205611 * rm + -8.213560884850143, 此时loss是: 52.22478685962898\n",
      "在第1267步，我们获得了函数 f(rm) = 4.943925205583181 * rm + -8.219923073929415, 此时loss是: 52.220639579675414\n",
      "在第1268步，我们获得了函数 f(rm) = 4.944925133447997 * rm + -8.226283733078679, 此时loss是: 52.21649429409364\n",
      "在第1269步，我们获得了函数 f(rm) = 4.945924820857896 * rm + -8.23264286266584, 此时loss是: 52.21235100192462\n",
      "在第1270步，我们获得了函数 f(rm) = 4.946924267870701 * rm + -8.239000463058714, 此时loss是: 52.208209702209686\n",
      "在第1271步，我们获得了函数 f(rm) = 4.94792347454422 * rm + -8.245356534625031, 此时loss是: 52.20407039399066\n",
      "在第1272步，我们获得了函数 f(rm) = 4.948922440936249 * rm + -8.251711077732432, 此时loss是: 52.19993307630993\n",
      "在第1273步，我们获得了函数 f(rm) = 4.949921167104569 * rm + -8.258064092748468, 此时loss是: 52.1957977482103\n",
      "在第1274步，我们获得了函数 f(rm) = 4.950919653106946 * rm + -8.264415580040602, 此时loss是: 52.191664408734844\n",
      "在第1275步，我们获得了函数 f(rm) = 4.951917899001134 * rm + -8.270765539976209, 此时loss是: 52.18753305692751\n",
      "在第1276步，我们获得了函数 f(rm) = 4.952915904844872 * rm + -8.277113972922576, 此时loss是: 52.18340369183213\n",
      "在第1277步，我们获得了函数 f(rm) = 4.953913670695886 * rm + -8.283460879246904, 此时loss是: 52.179276312493634\n",
      "在第1278步，我们获得了函数 f(rm) = 4.954911196611887 * rm + -8.289806259316302, 此时loss是: 52.17515091795693\n",
      "在第1279步，我们获得了函数 f(rm) = 4.955908482650574 * rm + -8.296150113497792, 此时loss是: 52.17102750726762\n",
      "在第1280步，我们获得了函数 f(rm) = 4.956905528869629 * rm + -8.302492442158306, 此时loss是: 52.166906079471666\n",
      "在第1281步，我们获得了函数 f(rm) = 4.957902335326723 * rm + -8.30883324566469, 此时loss是: 52.162786633615475\n",
      "在第1282步，我们获得了函数 f(rm) = 4.958898902079511 * rm + -8.315172524383703, 此时loss是: 52.1586691687461\n",
      "在第1283步，我们获得了函数 f(rm) = 4.959895229185637 * rm + -8.321510278682013, 此时loss是: 52.15455368391076\n",
      "在第1284步，我们获得了函数 f(rm) = 4.960891316702728 * rm + -8.3278465089262, 此时loss是: 52.15044017815738\n",
      "在第1285步，我们获得了函数 f(rm) = 4.9618871646884 * rm + -8.334181215482758, 此时loss是: 52.14632865053412\n",
      "在第1286步，我们获得了函数 f(rm) = 4.962882773200252 * rm + -8.340514398718092, 此时loss是: 52.14221910008985\n",
      "在第1287步，我们获得了函数 f(rm) = 4.963878142295872 * rm + -8.346846058998517, 此时loss是: 52.138111525873775\n",
      "在第1288步，我们获得了函数 f(rm) = 4.964873272032832 * rm + -8.353176196690264, 此时loss是: 52.13400592693553\n",
      "在第1289步，我们获得了函数 f(rm) = 4.965868162468692 * rm + -8.35950481215947, 此时loss是: 52.12990230232511\n",
      "在第1290步，我们获得了函数 f(rm) = 4.966862813660997 * rm + -8.36583190577219, 此时loss是: 52.12580065109324\n",
      "在第1291步，我们获得了函数 f(rm) = 4.967857225667278 * rm + -8.372157477894387, 此时loss是: 52.1217009722909\n",
      "在第1292步，我们获得了函数 f(rm) = 4.968851398545053 * rm + -8.378481528891937, 此时loss是: 52.11760326496964\n",
      "在第1293步，我们获得了函数 f(rm) = 4.969845332351826 * rm + -8.38480405913063, 此时loss是: 52.11350752818122\n",
      "在第1294步，我们获得了函数 f(rm) = 4.970839027145087 * rm + -8.391125068976164, 此时loss是: 52.10941376097816\n",
      "在第1295步，我们获得了函数 f(rm) = 4.971832482982311 * rm + -8.397444558794152, 此时loss是: 52.10532196241337\n",
      "在第1296步，我们获得了函数 f(rm) = 4.9728256999209615 * rm + -8.40376252895012, 此时loss是: 52.10123213154008\n",
      "在第1297步，我们获得了函数 f(rm) = 4.973818678018485 * rm + -8.410078979809503, 此时loss是: 52.09714426741202\n",
      "在第1298步，我们获得了函数 f(rm) = 4.97481141733232 * rm + -8.41639391173765, 此时loss是: 52.09305836908346\n",
      "在第1299步，我们获得了函数 f(rm) = 4.975803917919884 * rm + -8.422707325099822, 此时loss是: 52.088974435609046\n",
      "在第1300步，我们获得了函数 f(rm) = 4.976796179838585 * rm + -8.429019220261193, 此时loss是: 52.08489246604396\n",
      "在第1301步，我们获得了函数 f(rm) = 4.977788203145817 * rm + -8.435329597586847, 此时loss是: 52.08081245944376\n",
      "在第1302步，我们获得了函数 f(rm) = 4.9787799878989585 * rm + -8.441638457441782, 此时loss是: 52.07673441486444\n",
      "在第1303步，我们获得了函数 f(rm) = 4.979771534155375 * rm + -8.447945800190906, 此时loss是: 52.0726583313625\n",
      "在第1304步，我们获得了函数 f(rm) = 4.98076284197242 * rm + -8.454251626199042, 此时loss是: 52.06858420799497\n",
      "在第1305步，我们获得了函数 f(rm) = 4.98175391140743 * rm + -8.460555935830925, 此时loss是: 52.06451204381915\n",
      "在第1306步，我们获得了函数 f(rm) = 4.9827447425177285 * rm + -8.4668587294512, 此时loss是: 52.060441837892895\n",
      "在第1307步，我们获得了函数 f(rm) = 4.9837353353606275 * rm + -8.473160007424427, 此时loss是: 52.05637358927457\n",
      "在第1308步，我们获得了函数 f(rm) = 4.984725689993424 * rm + -8.479459770115076, 此时loss是: 52.05230729702295\n",
      "在第1309步，我们获得了函数 f(rm) = 4.9857158064734 * rm + -8.48575801788753, 此时loss是: 52.04824296019707\n",
      "在第1310步，我们获得了函数 f(rm) = 4.986705684857824 * rm + -8.492054751106087, 此时loss是: 52.04418057785679\n",
      "在第1311步，我们获得了函数 f(rm) = 4.987695325203953 * rm + -8.498349970134953, 此时loss是: 52.04012014906222\n",
      "在第1312步，我们获得了函数 f(rm) = 4.988684727569028 * rm + -8.50464367533825, 此时loss是: 52.036061672873714\n",
      "在第1313步，我们获得了函数 f(rm) = 4.989673892010277 * rm + -8.510935867080011, 此时loss是: 52.032005148352496\n",
      "在第1314步，我们获得了函数 f(rm) = 4.990662818584913 * rm + -8.517226545724181, 此时loss是: 52.02795057455992\n",
      "在第1315步，我们获得了函数 f(rm) = 4.991651507350137 * rm + -8.523515711634618, 此时loss是: 52.023897950558\n",
      "在第1316步，我们获得了函数 f(rm) = 4.992639958363136 * rm + -8.529803365175091, 此时loss是: 52.019847275409084\n",
      "在第1317步，我们获得了函数 f(rm) = 4.993628171681083 * rm + -8.536089506709287, 此时loss是: 52.01579854817599\n",
      "在第1318步，我们获得了函数 f(rm) = 4.994616147361136 * rm + -8.542374136600797, 此时loss是: 52.01175176792198\n",
      "在第1319步，我们获得了函数 f(rm) = 4.995603885460441 * rm + -8.548657255213133, 此时loss是: 52.00770693371067\n",
      "在第1320步，我们获得了函数 f(rm) = 4.99659138603613 * rm + -8.554938862909713, 此时loss是: 52.00366404460641\n",
      "在第1321步，我们获得了函数 f(rm) = 4.997578649145319 * rm + -8.561218960053873, 此时loss是: 51.99962309967378\n",
      "在第1322步，我们获得了函数 f(rm) = 4.998565674845114 * rm + -8.567497547008857, 此时loss是: 51.995584097977726\n",
      "在第1323步，我们获得了函数 f(rm) = 4.999552463192605 * rm + -8.573774624137824, 此时loss是: 51.99154703858394\n",
      "在第1324步，我们获得了函数 f(rm) = 5.000539014244868 * rm + -8.580050191803846, 此时loss是: 51.98751192055832\n",
      "在第1325步，我们获得了函数 f(rm) = 5.0015253280589675 * rm + -8.586324250369904, 此时loss是: 51.983478742967314\n",
      "在第1326步，我们获得了函数 f(rm) = 5.00251140469195 * rm + -8.592596800198898, 此时loss是: 51.979447504877655\n",
      "在第1327步，我们获得了函数 f(rm) = 5.003497244200854 * rm + -8.598867841653636, 此时loss是: 51.97541820535694\n",
      "在第1328步，我们获得了函数 f(rm) = 5.0044828466426985 * rm + -8.60513737509684, 此时loss是: 51.97139084347272\n",
      "在第1329步，我们获得了函数 f(rm) = 5.0054682120744936 * rm + -8.611405400891146, 此时loss是: 51.967365418293255\n",
      "在第1330步，我们获得了函数 f(rm) = 5.006453340553232 * rm + -8.6176719193991, 此时loss是: 51.963341928887154\n",
      "在第1331步，我们获得了函数 f(rm) = 5.007438232135897 * rm + -8.623936930983165, 此时loss是: 51.95932037432366\n",
      "在第1332步，我们获得了函数 f(rm) = 5.008422886879452 * rm + -8.630200436005714, 此时loss是: 51.95530075367225\n",
      "在第1333步，我们获得了函数 f(rm) = 5.0094073048408525 * rm + -8.636462434829031, 此时loss是: 51.951283066002986\n",
      "在第1334步，我们获得了函数 f(rm) = 5.0103914860770375 * rm + -8.642722927815317, 此时loss是: 51.947267310386245\n",
      "在第1335步，我们获得了函数 f(rm) = 5.011375430644933 * rm + -8.648981915326685, 此时loss是: 51.94325348589299\n",
      "在第1336步，我们获得了函数 f(rm) = 5.012359138601451 * rm + -8.655239397725158, 此时loss是: 51.9392415915946\n",
      "在第1337步，我们获得了函数 f(rm) = 5.01334261000349 * rm + -8.661495375372674, 此时loss是: 51.93523162656278\n",
      "在第1338步，我们获得了函数 f(rm) = 5.014325844907935 * rm + -8.667749848631084, 此时loss是: 51.931223589869816\n",
      "在第1339步，我们获得了函数 f(rm) = 5.015308843371657 * rm + -8.674002817862153, 此时loss是: 51.92721748058838\n",
      "在第1340步，我们获得了函数 f(rm) = 5.016291605451514 * rm + -8.680254283427557, 此时loss是: 51.9232132977916\n",
      "在第1341步，我们获得了函数 f(rm) = 5.017274131204348 * rm + -8.686504245688885, 此时loss是: 51.91921104055314\n",
      "在第1342步，我们获得了函数 f(rm) = 5.01825642068699 * rm + -8.692752705007642, 此时loss是: 51.91521070794681\n",
      "在第1343步，我们获得了函数 f(rm) = 5.019238473956257 * rm + -8.698999661745242, 此时loss是: 51.91121229904738\n",
      "在第1344步，我们获得了函数 f(rm) = 5.020220291068952 * rm + -8.705245116263015, 此时loss是: 51.907215812929536\n",
      "在第1345步，我们获得了函数 f(rm) = 5.021201872081863 * rm + -8.711489068922203, 此时loss是: 51.903221248668785\n",
      "在第1346步，我们获得了函数 f(rm) = 5.022183217051766 * rm + -8.717731520083962, 此时loss是: 51.89922860534083\n",
      "在第1347步，我们获得了函数 f(rm) = 5.023164326035423 * rm + -8.72397247010936, 此时loss是: 51.89523788202193\n",
      "在第1348步，我们获得了函数 f(rm) = 5.024145199089581 * rm + -8.730211919359377, 此时loss是: 51.89124907778876\n",
      "在第1349步，我们获得了函数 f(rm) = 5.025125836270976 * rm + -8.73644986819491, 此时loss是: 51.88726219171856\n",
      "在第1350步，我们获得了函数 f(rm) = 5.026106237636329 * rm + -8.742686316976767, 此时loss是: 51.88327722288883\n",
      "在第1351步，我们获得了函数 f(rm) = 5.027086403242345 * rm + -8.74892126606567, 此时loss是: 51.87929417037753\n",
      "在第1352步，我们获得了函数 f(rm) = 5.028066333145721 * rm + -8.755154715822252, 此时loss是: 51.87531303326331\n",
      "在第1353步，我们获得了函数 f(rm) = 5.029046027403133 * rm + -8.761386666607061, 此时loss是: 51.87133381062497\n",
      "在第1354步，我们获得了函数 f(rm) = 5.03002548607125 * rm + -8.767617118780558, 此时loss是: 51.8673565015419\n",
      "在第1355步，我们获得了函数 f(rm) = 5.031004709206725 * rm + -8.773846072703119, 此时loss是: 51.86338110509378\n",
      "在第1356步，我们获得了函数 f(rm) = 5.031983696866195 * rm + -8.780073528735029, 此时loss是: 51.859407620361026\n",
      "在第1357步，我们获得了函数 f(rm) = 5.032962449106287 * rm + -8.78629948723649, 此时loss是: 51.855436046424146\n",
      "在第1358步，我们获得了函数 f(rm) = 5.033940965983612 * rm + -8.79252394856762, 此时loss是: 51.85146638236439\n",
      "在第1359步，我们获得了函数 f(rm) = 5.034919247554768 * rm + -8.798746913088443, 此时loss是: 51.84749862726331\n",
      "在第1360步，我们获得了函数 f(rm) = 5.035897293876341 * rm + -8.804968381158902, 此时loss是: 51.843532780202935\n",
      "在第1361步，我们获得了函数 f(rm) = 5.036875105004902 * rm + -8.811188353138851, 此时loss是: 51.83956884026556\n",
      "在第1362步，我们获得了函数 f(rm) = 5.037852680997006 * rm + -8.817406829388059, 此时loss是: 51.835606806534216\n",
      "在第1363步，我们获得了函数 f(rm) = 5.0388300219092 * rm + -8.823623810266207, 此时loss是: 51.831646678092184\n",
      "在第1364步，我们获得了函数 f(rm) = 5.039807127798011 * rm + -8.829839296132892, 此时loss是: 51.827688454023274\n",
      "在第1365步，我们获得了函数 f(rm) = 5.0407839987199585 * rm + -8.836053287347621, 此时loss是: 51.823732133411674\n",
      "在第1366步，我们获得了函数 f(rm) = 5.041760634731544 * rm + -8.842265784269816, 此时loss是: 51.8197777153421\n",
      "在第1367步，我们获得了函数 f(rm) = 5.042737035889256 * rm + -8.848476787258814, 此时loss是: 51.815825198899496\n",
      "在第1368步，我们获得了函数 f(rm) = 5.043713202249572 * rm + -8.854686296673865, 此时loss是: 51.811874583169484\n",
      "在第1369步，我们获得了函数 f(rm) = 5.044689133868954 * rm + -8.86089431287413, 此时loss是: 51.80792586723808\n",
      "在第1370步，我们获得了函数 f(rm) = 5.04566483080385 * rm + -8.867100836218688, 此时loss是: 51.803979050191636\n",
      "在第1371步，我们获得了函数 f(rm) = 5.046640293110696 * rm + -8.873305867066527, 此时loss是: 51.800034131116966\n",
      "在第1372步，我们获得了函数 f(rm) = 5.047615520845913 * rm + -8.879509405776554, 此时loss是: 51.796091109101475\n",
      "在第1373步，我们获得了函数 f(rm) = 5.048590514065908 * rm + -8.885711452707586, 此时loss是: 51.7921499832328\n",
      "在第1374步，我们获得了函数 f(rm) = 5.049565272827078 * rm + -8.891912008218352, 此时loss是: 51.78821075259917\n",
      "在第1375步，我们获得了函数 f(rm) = 5.0505397971858015 * rm + -8.898111072667499, 此时loss是: 51.78427341628919\n",
      "在第1376步，我们获得了函数 f(rm) = 5.051514087198446 * rm + -8.904308646413586, 此时loss是: 51.780337973391774\n",
      "在第1377步，我们获得了函数 f(rm) = 5.052488142921367 * rm + -8.910504729815086, 此时loss是: 51.77640442299656\n",
      "在第1378步，我们获得了函数 f(rm) = 5.053461964410903 * rm + -8.916699323230386, 此时loss是: 51.77247276419346\n",
      "在第1379步，我们获得了函数 f(rm) = 5.0544355517233805 * rm + -8.922892427017786, 此时loss是: 51.768542996072746\n",
      "在第1380步，我们获得了函数 f(rm) = 5.055408904915113 * rm + -8.929084041535498, 此时loss是: 51.764615117725214\n",
      "在第1381步，我们获得了函数 f(rm) = 5.056382024042401 * rm + -8.935274167141653, 此时loss是: 51.76068912824217\n",
      "在第1382步，我们获得了函数 f(rm) = 5.05735490916153 * rm + -8.941462804194291, 此时loss是: 51.75676502671533\n",
      "在第1383步，我们获得了函数 f(rm) = 5.058327560328771 * rm + -8.94764995305137, 此时loss是: 51.752842812236594\n",
      "在第1384步，我们获得了函数 f(rm) = 5.059299977600386 * rm + -8.953835614070757, 此时loss是: 51.74892248389875\n",
      "在第1385步，我们获得了函数 f(rm) = 5.060272161032617 * rm + -8.960019787610237, 此时loss是: 51.745004040794576\n",
      "在第1386步，我们获得了函数 f(rm) = 5.061244110681698 * rm + -8.96620247402751, 此时loss是: 51.74108748201762\n",
      "在第1387步，我们获得了函数 f(rm) = 5.062215826603847 * rm + -8.972383673680184, 此时loss是: 51.73717280666168\n",
      "在第1388步，我们获得了函数 f(rm) = 5.063187308855269 * rm + -8.978563386925787, 此时loss是: 51.73326001382104\n",
      "在第1389步，我们获得了函数 f(rm) = 5.064158557492154 * rm + -8.984741614121756, 此时loss是: 51.7293491025905\n",
      "在第1390步，我们获得了函数 f(rm) = 5.065129572570681 * rm + -8.990918355625446, 此时loss是: 51.72544007206509\n",
      "在第1391步，我们获得了函数 f(rm) = 5.066100354147015 * rm + -8.997093611794126, 此时loss是: 51.72153292134046\n",
      "在第1392步，我们获得了函数 f(rm) = 5.0670709022773055 * rm + -9.003267382984976, 此时loss是: 51.717627649512714\n",
      "在第1393步，我们获得了函数 f(rm) = 5.068041217017689 * rm + -9.009439669555094, 此时loss是: 51.71372425567822\n",
      "在第1394步，我们获得了函数 f(rm) = 5.069011298424292 * rm + -9.01561047186149, 此时loss是: 51.70982273893395\n",
      "在第1395步，我们获得了函数 f(rm) = 5.069981146553223 * rm + -9.021779790261085, 此时loss是: 51.70592309837712\n",
      "在第1396步，我们获得了函数 f(rm) = 5.070950761460579 * rm + -9.027947625110722, 此时loss是: 51.70202533310558\n",
      "在第1397步，我们获得了函数 f(rm) = 5.071920143202443 * rm + -9.03411397676715, 此时loss是: 51.69812944221756\n",
      "在第1398步，我们获得了函数 f(rm) = 5.072889291834887 * rm + -9.04027884558704, 此时loss是: 51.694235424811666\n",
      "在第1399步，我们获得了函数 f(rm) = 5.073858207413964 * rm + -9.046442231926967, 此时loss是: 51.69034327998687\n",
      "在第1400步，我们获得了函数 f(rm) = 5.074826889995719 * rm + -9.052604136143431, 此时loss是: 51.68645300684278\n",
      "在第1401步，我们获得了函数 f(rm) = 5.075795339636181 * rm + -9.058764558592841, 此时loss是: 51.682564604479396\n",
      "在第1402步，我们获得了函数 f(rm) = 5.076763556391366 * rm + -9.06492349963152, 此时loss是: 51.67867807199686\n",
      "在第1403步，我们获得了函数 f(rm) = 5.077731540317275 * rm + -9.071080959615706, 此时loss是: 51.67479340849626\n",
      "在第1404步，我们获得了函数 f(rm) = 5.078699291469899 * rm + -9.077236938901551, 此时loss是: 51.67091061307848\n",
      "在第1405步，我们获得了函数 f(rm) = 5.079666809905213 * rm + -9.083391437845124, 此时loss是: 51.667029684845545\n",
      "在第1406步，我们获得了函数 f(rm) = 5.080634095679179 * rm + -9.089544456802404, 此时loss是: 51.66315062289929\n",
      "在第1407步，我们获得了函数 f(rm) = 5.081601148847745 * rm + -9.095695996129288, 此时loss是: 51.65927342634238\n",
      "在第1408步，我们获得了函数 f(rm) = 5.082567969466846 * rm + -9.101846056181586, 此时loss是: 51.65539809427769\n",
      "在第1409步，我们获得了函数 f(rm) = 5.083534557592405 * rm + -9.107994637315022, 此时loss是: 51.65152462580867\n",
      "在第1410步，我们获得了函数 f(rm) = 5.08450091328033 * rm + -9.114141739885234, 此时loss是: 51.647653020039115\n",
      "在第1411步，我们获得了函数 f(rm) = 5.085467036586515 * rm + -9.120287364247778, 此时loss是: 51.6437832760733\n",
      "在第1412步，我们获得了函数 f(rm) = 5.086432927566841 * rm + -9.12643151075812, 此时loss是: 51.63991539301583\n",
      "在第1413步，我们获得了函数 f(rm) = 5.087398586277177 * rm + -9.132574179771643, 此时loss是: 51.63604936997194\n",
      "在第1414步，我们获得了函数 f(rm) = 5.088364012773377 * rm + -9.138715371643643, 此时loss是: 51.63218520604712\n",
      "在第1415步，我们获得了函数 f(rm) = 5.089329207111283 * rm + -9.144855086729335, 此时loss是: 51.628322900347314\n",
      "在第1416步，我们获得了函数 f(rm) = 5.090294169346722 * rm + -9.15099332538384, 此时loss是: 51.62446245197898\n",
      "在第1417步，我们获得了函数 f(rm) = 5.091258899535506 * rm + -9.157130087962203, 此时loss是: 51.62060386004889\n",
      "在第1418步，我们获得了函数 f(rm) = 5.092223397733439 * rm + -9.163265374819378, 此时loss是: 51.61674712366439\n",
      "在第1419步，我们获得了函数 f(rm) = 5.093187663996307 * rm + -9.169399186310235, 此时loss是: 51.612892241933054\n",
      "在第1420步，我们获得了函数 f(rm) = 5.094151698379885 * rm + -9.175531522789559, 此时loss是: 51.60903921396314\n",
      "在第1421步，我们获得了函数 f(rm) = 5.095115500939931 * rm + -9.181662384612048, 此时loss是: 51.60518803886306\n",
      "在第1422步，我们获得了函数 f(rm) = 5.096079071732195 * rm + -9.187791772132318, 此时loss是: 51.601338715741946\n",
      "在第1423步，我们获得了函数 f(rm) = 5.097042410812409 * rm + -9.193919685704897, 此时loss是: 51.59749124370901\n",
      "在第1424步，我们获得了函数 f(rm) = 5.0980055182362936 * rm + -9.200046125684226, 此时loss是: 51.59364562187432\n",
      "在第1425步，我们获得了函数 f(rm) = 5.098968394059556 * rm + -9.206171092424666, 此时loss是: 51.589801849348014\n",
      "在第1426步，我们获得了函数 f(rm) = 5.09993103833789 * rm + -9.21229458628049, 此时loss是: 51.58595992524077\n",
      "在第1427步，我们获得了函数 f(rm) = 5.100893451126976 * rm + -9.218416607605887, 此时loss是: 51.58211984866371\n",
      "在第1428步，我们获得了函数 f(rm) = 5.101855632482478 * rm + -9.224537156754957, 此时loss是: 51.57828161872834\n",
      "在第1429步，我们获得了函数 f(rm) = 5.1028175824600535 * rm + -9.230656234081719, 此时loss是: 51.5744452345468\n",
      "在第1430步，我们获得了函数 f(rm) = 5.10377930111534 * rm + -9.236773839940106, 此时loss是: 51.57061069523141\n",
      "在第1431步，我们获得了函数 f(rm) = 5.104740788503964 * rm + -9.242889974683965, 此时loss是: 51.5667779998949\n",
      "在第1432步，我们获得了函数 f(rm) = 5.10570204468154 * rm + -9.249004638667058, 此时loss是: 51.56294714765069\n",
      "在第1433步，我们获得了函数 f(rm) = 5.106663069703667 * rm + -9.255117832243062, 此时loss是: 51.55911813761227\n",
      "在第1434步，我们获得了函数 f(rm) = 5.107623863625931 * rm + -9.261229555765569, 此时loss是: 51.55529096889392\n",
      "在第1435步，我们获得了函数 f(rm) = 5.108584426503906 * rm + -9.267339809588085, 此时loss是: 51.55146564061012\n",
      "在第1436步，我们获得了函数 f(rm) = 5.1095447583931515 * rm + -9.273448594064034, 此时loss是: 51.54764215187578\n",
      "在第1437步，我们获得了函数 f(rm) = 5.110504859349214 * rm + -9.279555909546753, 此时loss是: 51.54382050180634\n",
      "在第1438步，我们获得了函数 f(rm) = 5.111464729427626 * rm + -9.285661756389493, 此时loss是: 51.54000068951762\n",
      "在第1439步，我们获得了函数 f(rm) = 5.112424368683907 * rm + -9.291766134945421, 此时loss是: 51.536182714125744\n",
      "在第1440步，我们获得了函数 f(rm) = 5.113383777173564 * rm + -9.297869045567621, 此时loss是: 51.53236657474747\n",
      "在第1441步，我们获得了函数 f(rm) = 5.114342954952091 * rm + -9.303970488609089, 此时loss是: 51.52855227049997\n",
      "在第1442步，我们获得了函数 f(rm) = 5.115301902074966 * rm + -9.310070464422738, 此时loss是: 51.52473980050049\n",
      "在第1443步，我们获得了函数 f(rm) = 5.116260618597655 * rm + -9.316168973361396, 此时loss是: 51.520929163867216\n",
      "在第1444步，我们获得了函数 f(rm) = 5.117219104575613 * rm + -9.322266015777805, 此时loss是: 51.5171203597185\n",
      "在第1445步，我们获得了函数 f(rm) = 5.118177360064277 * rm + -9.328361592024622, 此时loss是: 51.51331338717291\n",
      "在第1446步，我们获得了函数 f(rm) = 5.119135385119075 * rm + -9.334455702454422, 此时loss是: 51.50950824534984\n",
      "在第1447步，我们获得了函数 f(rm) = 5.120093179795419 * rm + -9.340548347419693, 此时loss是: 51.50570493336887\n",
      "在第1448步，我们获得了函数 f(rm) = 5.12105074414871 * rm + -9.346639527272838, 此时loss是: 51.50190345035005\n",
      "在第1449步，我们获得了函数 f(rm) = 5.122008078234334 * rm + -9.352729242366177, 此时loss是: 51.49810379541387\n",
      "在第1450步，我们获得了函数 f(rm) = 5.122965182107662 * rm + -9.358817493051943, 此时loss是: 51.494305967681186\n",
      "在第1451步，我们获得了函数 f(rm) = 5.123922055824056 * rm + -9.364904279682284, 此时loss是: 51.490509966273336\n",
      "在第1452步，我们获得了函数 f(rm) = 5.124878699438861 * rm + -9.370989602609265, 此时loss是: 51.486715790312104\n",
      "在第1453步，我们获得了函数 f(rm) = 5.125835113007411 * rm + -9.37707346218487, 此时loss是: 51.48292343891958\n",
      "在第1454步，我们获得了函数 f(rm) = 5.126791296585025 * rm + -9.38315585876099, 此时loss是: 51.47913291121843\n",
      "在第1455步，我们获得了函数 f(rm) = 5.127747250227009 * rm + -9.389236792689438, 此时loss是: 51.47534420633166\n",
      "在第1456步，我们获得了函数 f(rm) = 5.128702973988658 * rm + -9.39531626432194, 此时loss是: 51.47155732338273\n",
      "在第1457步，我们获得了函数 f(rm) = 5.129658467925251 * rm + -9.401394274010137, 此时loss是: 51.467772261495334\n",
      "在第1458步，我们获得了函数 f(rm) = 5.130613732092053 * rm + -9.407470822105585, 此时loss是: 51.463989019793935\n",
      "在第1459步，我们获得了函数 f(rm) = 5.131568766544319 * rm + -9.41354590895976, 此时loss是: 51.46020759740314\n",
      "在第1460步，我们获得了函数 f(rm) = 5.1325235713372885 * rm + -9.419619534924047, 此时loss是: 51.45642799344805\n",
      "在第1461步，我们获得了函数 f(rm) = 5.133478146526188 * rm + -9.42569170034975, 此时loss是: 51.452650207054305\n",
      "在第1462步，我们获得了函数 f(rm) = 5.134432492166232 * rm + -9.431762405588088, 此时loss是: 51.448874237347695\n",
      "在第1463步，我们获得了函数 f(rm) = 5.1353866083126185 * rm + -9.437831650990198, 此时loss是: 51.445100083454776\n",
      "在第1464步，我们获得了函数 f(rm) = 5.136340495020536 * rm + -9.443899436907126, 此时loss是: 51.44132774450223\n",
      "在第1465步，我们获得了函数 f(rm) = 5.137294152345158 * rm + -9.44996576368984, 此时loss是: 51.437557219617325\n",
      "在第1466步，我们获得了函数 f(rm) = 5.138247580341644 * rm + -9.456030631689222, 此时loss是: 51.43378850792768\n",
      "在第1467步，我们获得了函数 f(rm) = 5.139200779065142 * rm + -9.462094041256067, 此时loss是: 51.43002160856136\n",
      "在第1468步，我们获得了函数 f(rm) = 5.1401537485707856 * rm + -9.468155992741089, 此时loss是: 51.42625652064688\n",
      "在第1469步，我们获得了函数 f(rm) = 5.141106488913694 * rm + -9.474216486494916, 此时loss是: 51.42249324331308\n",
      "在第1470步，我们获得了函数 f(rm) = 5.1420590001489765 * rm + -9.48027552286809, 此时loss是: 51.41873177568932\n",
      "在第1471步，我们获得了函数 f(rm) = 5.1430112823317256 * rm + -9.486333102211075, 此时loss是: 51.41497211690526\n",
      "在第1472步，我们获得了函数 f(rm) = 5.143963335517023 * rm + -9.492389224874243, 此时loss是: 51.41121426609116\n",
      "在第1473步，我们获得了函数 f(rm) = 5.144915159759936 * rm + -9.498443891207886, 此时loss是: 51.40745822237753\n",
      "在第1474步，我们获得了函数 f(rm) = 5.145866755115518 * rm + -9.50449710156221, 此时loss是: 51.40370398489531\n",
      "在第1475步，我们获得了函数 f(rm) = 5.146818121638812 * rm + -9.510548856287338, 此时loss是: 51.39995155277599\n",
      "在第1476步，我们获得了函数 f(rm) = 5.147769259384844 * rm + -9.516599155733308, 此时loss是: 51.39620092515145\n",
      "在第1477步，我们获得了函数 f(rm) = 5.148720168408629 * rm + -9.522648000250076, 此时loss是: 51.39245210115376\n",
      "在第1478步，我们获得了函数 f(rm) = 5.149670848765169 * rm + -9.528695390187512, 此时loss是: 51.38870507991574\n",
      "在第1479步，我们获得了函数 f(rm) = 5.150621300509451 * rm + -9.5347413258954, 此时loss是: 51.3849598605703\n",
      "在第1480步，我们获得了函数 f(rm) = 5.151571523696452 * rm + -9.540785807723443, 此时loss是: 51.38121644225116\n",
      "在第1481步，我们获得了函数 f(rm) = 5.152521518381132 * rm + -9.546828836021259, 此时loss是: 51.37747482409202\n",
      "在第1482步，我们获得了函数 f(rm) = 5.153471284618439 * rm + -9.552870411138382, 此时loss是: 51.37373500522729\n",
      "在第1483步，我们获得了函数 f(rm) = 5.15442082246331 * rm + -9.55891053342426, 此时loss是: 51.369996984791776\n",
      "在第1484步，我们获得了函数 f(rm) = 5.155370131970665 * rm + -9.564949203228261, 此时loss是: 51.3662607619205\n",
      "在第1485步，我们获得了函数 f(rm) = 5.156319213195415 * rm + -9.570986420899665, 此时loss是: 51.36252633574921\n",
      "在第1486步，我们获得了函数 f(rm) = 5.157268066192454 * rm + -9.57702218678767, 此时loss是: 51.35879370541372\n",
      "在第1487步，我们获得了函数 f(rm) = 5.158216691016666 * rm + -9.583056501241389, 此时loss是: 51.35506287005053\n",
      "在第1488步，我们获得了函数 f(rm) = 5.159165087722918 * rm + -9.589089364609853, 此时loss是: 51.351333828796434\n",
      "在第1489步，我们获得了函数 f(rm) = 5.160113256366068 * rm + -9.595120777242007, 此时loss是: 51.34760658078868\n",
      "在第1490步，我们获得了函数 f(rm) = 5.161061197000958 * rm + -9.601150739486712, 此时loss是: 51.34388112516494\n",
      "在第1491步，我们获得了函数 f(rm) = 5.1620089096824175 * rm + -9.607179251692747, 此时loss是: 51.34015746106321\n",
      "在第1492步，我们获得了函数 f(rm) = 5.162956394465263 * rm + -9.613206314208806, 此时loss是: 51.33643558762205\n",
      "在第1493步，我们获得了函数 f(rm) = 5.163903651404299 * rm + -9.619231927383499, 此时loss是: 51.33271550398041\n",
      "在第1494步，我们获得了函数 f(rm) = 5.164850680554315 * rm + -9.625256091565353, 此时loss是: 51.328997209277404\n",
      "在第1495步，我们获得了函数 f(rm) = 5.1657974819700865 * rm + -9.63127880710281, 此时loss是: 51.32528070265295\n",
      "在第1496步，我们获得了函数 f(rm) = 5.166744055706379 * rm + -9.637300074344228, 此时loss是: 51.321565983247076\n",
      "在第1497步，我们获得了函数 f(rm) = 5.167690401817942 * rm + -9.643319893637884, 此时loss是: 51.31785305020035\n",
      "在第1498步，我们获得了函数 f(rm) = 5.168636520359513 * rm + -9.649338265331968, 此时loss是: 51.314141902653766\n",
      "在第1499步，我们获得了函数 f(rm) = 5.169582411385818 * rm + -9.655355189774587, 此时loss是: 51.31043253974868\n",
      "在第1500步，我们获得了函数 f(rm) = 5.170528074951566 * rm + -9.661370667313767, 此时loss是: 51.30672496062688\n",
      "在第1501步，我们获得了函数 f(rm) = 5.171473511111456 * rm + -9.667384698297447, 此时loss是: 51.30301916443048\n",
      "在第1502步，我们获得了函数 f(rm) = 5.172418719920173 * rm + -9.673397283073482, 此时loss是: 51.29931515030224\n",
      "在第1503步，我们获得了函数 f(rm) = 5.173363701432388 * rm + -9.679408421989647, 此时loss是: 51.29561291738515\n",
      "在第1504步，我们获得了函数 f(rm) = 5.17430845570276 * rm + -9.685418115393631, 此时loss是: 51.291912464822644\n",
      "在第1505步，我们获得了函数 f(rm) = 5.175252982785933 * rm + -9.691426363633038, 此时loss是: 51.28821379175853\n",
      "在第1506步，我们获得了函数 f(rm) = 5.176197282736541 * rm + -9.69743316705539, 此时loss是: 51.28451689733711\n",
      "在第1507步，我们获得了函数 f(rm) = 5.177141355609202 * rm + -9.703438526008126, 此时loss是: 51.28082178070304\n",
      "在第1508步，我们获得了函数 f(rm) = 5.178085201458523 * rm + -9.709442440838602, 此时loss是: 51.27712844100149\n",
      "在第1509步，我们获得了函数 f(rm) = 5.179028820339096 * rm + -9.715444911894089, 此时loss是: 51.273436877377776\n",
      "在第1510步，我们获得了函数 f(rm) = 5.179972212305501 * rm + -9.721445939521773, 此时loss是: 51.26974708897799\n",
      "在第1511步，我们获得了函数 f(rm) = 5.180915377412305 * rm + -9.727445524068761, 此时loss是: 51.26605907494836\n",
      "在第1512步，我们获得了函数 f(rm) = 5.181858315714059 * rm + -9.733443665882072, 此时loss是: 51.2623728344356\n",
      "在第1513步，我们获得了函数 f(rm) = 5.182801027265307 * rm + -9.739440365308644, 此时loss是: 51.25868836658685\n",
      "在第1514步，我们获得了函数 f(rm) = 5.183743512120573 * rm + -9.74543562269533, 此时loss是: 51.25500567054973\n",
      "在第1515步，我们获得了函数 f(rm) = 5.184685770334373 * rm + -9.751429438388904, 此时loss是: 51.25132474547214\n",
      "在第1516步，我们获得了函数 f(rm) = 5.185627801961208 * rm + -9.75742181273605, 此时loss是: 51.24764559050245\n",
      "在第1517步，我们获得了函数 f(rm) = 5.186569607055565 * rm + -9.763412746083372, 此时loss是: 51.243968204789525\n",
      "在第1518步，我们获得了函数 f(rm) = 5.187511185671919 * rm + -9.76940223877739, 此时loss是: 51.24029258748238\n",
      "在第1519步，我们获得了函数 f(rm) = 5.188452537864732 * rm + -9.775390291164543, 此时loss是: 51.23661873773079\n",
      "在第1520步，我们获得了函数 f(rm) = 5.189393663688452 * rm + -9.781376903591184, 此时loss是: 51.232946654684625\n",
      "在第1521步，我们获得了函数 f(rm) = 5.190334563197515 * rm + -9.787362076403584, 此时loss是: 51.22927633749439\n",
      "在第1522步，我们获得了函数 f(rm) = 5.1912752364463435 * rm + -9.79334580994793, 此时loss是: 51.2256077853109\n",
      "在第1523步，我们获得了函数 f(rm) = 5.192215683489346 * rm + -9.799328104570327, 此时loss是: 51.22194099728534\n",
      "在第1524步，我们获得了函数 f(rm) = 5.19315590438092 * rm + -9.805308960616793, 此时loss是: 51.21827597256934\n",
      "在第1525步，我们获得了函数 f(rm) = 5.194095899175448 * rm + -9.81128837843327, 此时loss是: 51.21461271031501\n",
      "在第1526步，我们获得了函数 f(rm) = 5.1950356679273 * rm + -9.81726635836561, 此时loss是: 51.21095120967484\n",
      "在第1527步，我们获得了函数 f(rm) = 5.195975210690833 * rm + -9.823242900759583, 此时loss是: 51.20729146980157\n",
      "在第1528步，我们获得了函数 f(rm) = 5.1969145275203905 * rm + -9.829218005960879, 此时loss是: 51.2036334898485\n",
      "在第1529步，我们获得了函数 f(rm) = 5.197853618470304 * rm + -9.835191674315102, 此时loss是: 51.19997726896932\n",
      "在第1530步，我们获得了函数 f(rm) = 5.198792483594891 * rm + -9.841163906167774, 此时loss是: 51.19632280631822\n",
      "在第1531步，我们获得了函数 f(rm) = 5.199731122948457 * rm + -9.847134701864332, 此时loss是: 51.19267010104956\n",
      "在第1532步，我们获得了函数 f(rm) = 5.200669536585292 * rm + -9.853104061750136, 此时loss是: 51.189019152318345\n",
      "在第1533步，我们获得了函数 f(rm) = 5.201607724559676 * rm + -9.859071986170456, 此时loss是: 51.18536995927975\n",
      "在第1534步，我们获得了函数 f(rm) = 5.202545686925875 * rm + -9.865038475470481, 此时loss是: 51.18172252108963\n",
      "在第1535步，我们获得了函数 f(rm) = 5.20348342373814 * rm + -9.871003529995319, 此时loss是: 51.17807683690394\n",
      "在第1536步，我们获得了函数 f(rm) = 5.2044209350507105 * rm + -9.876967150089992, 此时loss是: 51.17443290587924\n",
      "在第1537步，我们获得了函数 f(rm) = 5.205358220917814 * rm + -9.882929336099442, 此时loss是: 51.17079072717268\n",
      "在第1538步，我们获得了函数 f(rm) = 5.206295281393664 * rm + -9.888890088368527, 此时loss是: 51.16715029994132\n",
      "在第1539步，我们获得了函数 f(rm) = 5.2072321165324595 * rm + -9.894849407242022, 此时loss是: 51.163511623343\n",
      "在第1540步，我们获得了函数 f(rm) = 5.208168726388388 * rm + -9.900807293064618, 此时loss是: 51.159874696535816\n",
      "在第1541步，我们获得了函数 f(rm) = 5.209105111015626 * rm + -9.906763746180925, 此时loss是: 51.156239518678404\n",
      "在第1542步，我们获得了函数 f(rm) = 5.2100412704683325 * rm + -9.912718766935466, 此时loss是: 51.15260608892969\n",
      "在第1543步，我们获得了函数 f(rm) = 5.210977204800655 * rm + -9.918672355672689, 此时loss是: 51.14897440644903\n",
      "在第1544步，我们获得了函数 f(rm) = 5.211912914066732 * rm + -9.924624512736951, 此时loss是: 51.14534447039618\n",
      "在第1545步，我们获得了函数 f(rm) = 5.212848398320683 * rm + -9.930575238472532, 此时loss是: 51.14171627993126\n",
      "在第1546步，我们获得了函数 f(rm) = 5.213783657616618 * rm + -9.936524533223624, 此时loss是: 51.1380898342149\n",
      "在第1547步，我们获得了函数 f(rm) = 5.214718692008634 * rm + -9.94247239733434, 此时loss是: 51.13446513240803\n",
      "在第1548步，我们获得了函数 f(rm) = 5.215653501550812 * rm + -9.948418831148711, 此时loss是: 51.13084217367211\n",
      "在第1549步，我们获得了函数 f(rm) = 5.216588086297223 * rm + -9.954363835010682, 此时loss是: 51.12722095716883\n",
      "在第1550步，我们获得了函数 f(rm) = 5.217522446301926 * rm + -9.960307409264118, 此时loss是: 51.12360148206037\n",
      "在第1551步，我们获得了函数 f(rm) = 5.2184565816189625 * rm + -9.9662495542528, 此时loss是: 51.119983747509394\n",
      "在第1552步，我们获得了函数 f(rm) = 5.219390492302365 * rm + -9.972190270320425, 此时loss是: 51.116367752678826\n",
      "在第1553步，我们获得了函数 f(rm) = 5.220324178406152 * rm + -9.978129557810611, 此时loss是: 51.112753496732076\n",
      "在第1554步，我们获得了函数 f(rm) = 5.221257639984328 * rm + -9.984067417066889, 此时loss是: 51.10914097883295\n",
      "在第1555步，我们获得了函数 f(rm) = 5.222190877090886 * rm + -9.990003848432712, 此时loss是: 51.10553019814563\n",
      "在第1556步，我们获得了函数 f(rm) = 5.223123889779803 * rm + -9.995938852251447, 此时loss是: 51.1019211538348\n",
      "在第1557步，我们获得了函数 f(rm) = 5.224056678105048 * rm + -10.00187242886638, 此时loss是: 51.098313845065235\n",
      "在第1558步，我们获得了函数 f(rm) = 5.224989242120572 * rm + -10.007804578620712, 此时loss是: 51.09470827100259\n",
      "在第1559步，我们获得了函数 f(rm) = 5.225921581880317 * rm + -10.013735301857565, 此时loss是: 51.091104430812535\n",
      "在第1560步，我们获得了函数 f(rm) = 5.22685369743821 * rm + -10.019664598919977, 此时loss是: 51.087502323661184\n",
      "在第1561步，我们获得了函数 f(rm) = 5.227785588848164 * rm + -10.025592470150903, 此时loss是: 51.08390194871544\n",
      "在第1562步，我们获得了函数 f(rm) = 5.228717256164082 * rm + -10.031518915893216, 此时loss是: 51.080303305142074\n",
      "在第1563步，我们获得了函数 f(rm) = 5.22964869943985 * rm + -10.037443936489707, 此时loss是: 51.07670639210849\n",
      "在第1564步，我们获得了函数 f(rm) = 5.2305799187293465 * rm + -10.043367532283083, 此时loss是: 51.073111208782514\n",
      "在第1565步，我们获得了函数 f(rm) = 5.231510914086432 * rm + -10.04928970361597, 此时loss是: 51.06951775433245\n",
      "在第1566步，我们获得了函数 f(rm) = 5.232441685564957 * rm + -10.055210450830913, 此时loss是: 51.06592602792687\n",
      "在第1567步，我们获得了函数 f(rm) = 5.233372233218758 * rm + -10.06112977427037, 此时loss是: 51.06233602873468\n",
      "在第1568步，我们获得了函数 f(rm) = 5.234302557101659 * rm + -10.06704767427672, 此时loss是: 51.05874775592534\n",
      "在第1569步，我们获得了函数 f(rm) = 5.235232657267468 * rm + -10.072964151192261, 此时loss是: 51.05516120866881\n",
      "在第1570步，我们获得了函数 f(rm) = 5.236162533769986 * rm + -10.078879205359206, 此时loss是: 51.05157638613497\n",
      "在第1571步，我们获得了函数 f(rm) = 5.237092186662997 * rm + -10.084792837119686, 此时loss是: 51.047993287494705\n",
      "在第1572步，我们获得了函数 f(rm) = 5.238021616000272 * rm + -10.090705046815751, 此时loss是: 51.044411911918914\n",
      "在第1573步，我们获得了函数 f(rm) = 5.23895082183557 * rm + -10.096615834789368, 此时loss是: 51.040832258578995\n",
      "在第1574步，我们获得了函数 f(rm) = 5.239879804222638 * rm + -10.102525201382422, 此时loss是: 51.037254326646696\n",
      "在第1575步，我们获得了函数 f(rm) = 5.240808563215209 * rm + -10.108433146936713, 此时loss是: 51.0336781152944\n",
      "在第1576步，我们获得了函数 f(rm) = 5.241737098867002 * rm + -10.114339671793966, 此时loss是: 51.03010362369457\n",
      "在第1577步，我们获得了函数 f(rm) = 5.242665411231725 * rm + -10.120244776295815, 此时loss是: 51.02653085102011\n",
      "在第1578步，我们获得了函数 f(rm) = 5.2435935003630725 * rm + -10.126148460783819, 此时loss是: 51.0229597964446\n",
      "在第1579步，我们获得了函数 f(rm) = 5.244521366314726 * rm + -10.13205072559945, 此时loss是: 51.01939045914176\n",
      "在第1580步，我们获得了函数 f(rm) = 5.245449009140354 * rm + -10.137951571084102, 此时loss是: 51.015822838285644\n",
      "在第1581步，我们获得了函数 f(rm) = 5.246376428893612 * rm + -10.143850997579083, 此时loss是: 51.01225693305098\n",
      "在第1582步，我们获得了函数 f(rm) = 5.247303625628143 * rm + -10.14974900542562, 此时loss是: 51.00869274261281\n",
      "在第1583步，我们获得了函数 f(rm) = 5.2482305993975755 * rm + -10.155645594964861, 此时loss是: 51.005130266146345\n",
      "在第1584步，我们获得了函数 f(rm) = 5.249157350255528 * rm + -10.161540766537867, 此时loss是: 51.00156950282742\n",
      "在第1585步，我们获得了函数 f(rm) = 5.250083878255603 * rm + -10.167434520485621, 此时loss是: 50.99801045183229\n",
      "在第1586步，我们获得了函数 f(rm) = 5.251010183451394 * rm + -10.173326857149021, 此时loss是: 50.99445311233738\n",
      "在第1587步，我们获得了函数 f(rm) = 5.251936265896477 * rm + -10.179217776868887, 此时loss是: 50.99089748351977\n",
      "在第1588步，我们获得了函数 f(rm) = 5.252862125644418 * rm + -10.185107279985953, 此时loss是: 50.98734356455675\n",
      "在第1589步，我们获得了函数 f(rm) = 5.25378776274877 * rm + -10.190995366840873, 此时loss是: 50.983791354626035\n",
      "在第1590步，我们获得了函数 f(rm) = 5.2547131772630715 * rm + -10.19688203777422, 此时loss是: 50.98024085290583\n",
      "在第1591步，我们获得了函数 f(rm) = 5.255638369240851 * rm + -10.202767293126483, 此时loss是: 50.97669205857479\n",
      "在第1592步，我们获得了函数 f(rm) = 5.256563338735621 * rm + -10.20865113323807, 此时loss是: 50.97314497081169\n",
      "在第1593步，我们获得了函数 f(rm) = 5.257488085800883 * rm + -10.214533558449306, 此时loss是: 50.969599588795965\n",
      "在第1594步，我们获得了函数 f(rm) = 5.258412610490125 * rm + -10.220414569100436, 此时loss是: 50.966055911707244\n",
      "在第1595步，我们获得了函数 f(rm) = 5.259336912856822 * rm + -10.226294165531623, 此时loss是: 50.96251393872572\n",
      "在第1596步，我们获得了函数 f(rm) = 5.2602609929544375 * rm + -10.232172348082948, 此时loss是: 50.95897366903189\n",
      "在第1597步，我们获得了函数 f(rm) = 5.261184850836419 * rm + -10.238049117094409, 此时loss是: 50.95543510180667\n",
      "在第1598步，我们获得了函数 f(rm) = 5.2621084865562056 * rm + -10.243924472905924, 此时loss是: 50.95189823623132\n",
      "在第1599步，我们获得了函数 f(rm) = 5.263031900167219 * rm + -10.249798415857327, 此时loss是: 50.94836307148763\n",
      "在第1600步，我们获得了函数 f(rm) = 5.263955091722872 * rm + -10.255670946288372, 此时loss是: 50.94482960675769\n",
      "在第1601步，我们获得了函数 f(rm) = 5.264878061276561 * rm + -10.261542064538732, 此时loss是: 50.94129784122389\n",
      "在第1602步，我们获得了函数 f(rm) = 5.265800808881672 * rm + -10.267411770947996, 此时loss是: 50.93776777406912\n",
      "在第1603步，我们获得了函数 f(rm) = 5.266723334591578 * rm + -10.273280065855674, 此时loss是: 50.93423940447681\n",
      "在第1604步，我们获得了函数 f(rm) = 5.267645638459639 * rm + -10.279146949601193, 此时loss是: 50.93071273163047\n",
      "在第1605步，我们获得了函数 f(rm) = 5.268567720539201 * rm + -10.285012422523897, 此时loss是: 50.9271877547142\n",
      "在第1606步，我们获得了函数 f(rm) = 5.269489580883598 * rm + -10.29087648496305, 此时loss是: 50.92366447291245\n",
      "在第1607步，我们获得了函数 f(rm) = 5.270411219546152 * rm + -10.296739137257836, 此时loss是: 50.92014288541\n",
      "在第1608步，我们获得了函数 f(rm) = 5.27133263658017 * rm + -10.302600379747354, 此时loss是: 50.91662299139223\n",
      "在第1609步，我们获得了函数 f(rm) = 5.272253832038948 * rm + -10.308460212770623, 此时loss是: 50.91310479004458\n",
      "在第1610步，我们获得了函数 f(rm) = 5.273174805975769 * rm + -10.314318636666579, 此时loss是: 50.90958828055319\n",
      "在第1611步，我们获得了函数 f(rm) = 5.274095558443903 * rm + -10.32017565177408, 此时loss是: 50.906073462104516\n",
      "在第1612步，我们获得了函数 f(rm) = 5.275016089496606 * rm + -10.326031258431902, 此时loss是: 50.90256033388523\n",
      "在第1613步，我们获得了函数 f(rm) = 5.275936399187123 * rm + -10.331885456978736, 此时loss是: 50.89904889508262\n",
      "在第1614步，我们获得了函数 f(rm) = 5.276856487568686 * rm + -10.337738247753194, 此时loss是: 50.89553914488417\n",
      "在第1615步，我们获得了函数 f(rm) = 5.277776354694514 * rm + -10.343589631093806, 此时loss是: 50.89203108247796\n",
      "在第1616步，我们获得了函数 f(rm) = 5.278696000617812 * rm + -10.349439607339022, 此时loss是: 50.8885247070523\n",
      "在第1617步，我们获得了函数 f(rm) = 5.279615425391772 * rm + -10.355288176827209, 此时loss是: 50.88502001779592\n",
      "在第1618步，我们获得了函数 f(rm) = 5.280534629069576 * rm + -10.361135339896652, 此时loss是: 50.88151701389805\n",
      "在第1619步，我们获得了函数 f(rm) = 5.281453611704391 * rm + -10.366981096885556, 此时loss是: 50.87801569454809\n",
      "在第1620步，我们获得了函数 f(rm) = 5.2823723733493715 * rm + -10.372825448132046, 此时loss是: 50.87451605893606\n",
      "在第1621步，我们获得了函数 f(rm) = 5.28329091405766 * rm + -10.378668393974161, 此时loss是: 50.871018106252315\n",
      "在第1622步，我们获得了函数 f(rm) = 5.284209233882384 * rm + -10.384509934749865, 此时loss是: 50.86752183568741\n",
      "在第1623步，我们获得了函数 f(rm) = 5.285127332876662 * rm + -10.390350070797034, 此时loss是: 50.86402724643259\n",
      "在第1624步，我们获得了函数 f(rm) = 5.2860452110935965 * rm + -10.39618880245347, 此时loss是: 50.86053433767924\n",
      "在第1625步，我们获得了函数 f(rm) = 5.286962868586278 * rm + -10.402026130056887, 此时loss是: 50.857043108619216\n",
      "在第1626步，我们获得了函数 f(rm) = 5.2878803054077865 * rm + -10.407862053944923, 此时loss是: 50.8535535584448\n",
      "在第1627步，我们获得了函数 f(rm) = 5.288797521611185 * rm + -10.41369657445513, 此时loss是: 50.85006568634875\n",
      "在第1628步，我们获得了函数 f(rm) = 5.289714517249527 * rm + -10.419529691924984, 此时loss是: 50.846579491523954\n",
      "在第1629步，我们获得了函数 f(rm) = 5.290631292375852 * rm + -10.425361406691877, 此时loss是: 50.8430949731639\n",
      "在第1630步，我们获得了函数 f(rm) = 5.291547847043187 * rm + -10.43119171909312, 此时loss是: 50.839612130462335\n",
      "在第1631步，我们获得了函数 f(rm) = 5.292464181304546 * rm + -10.437020629465941, 此时loss是: 50.83613096261354\n",
      "在第1632步，我们获得了函数 f(rm) = 5.293380295212932 * rm + -10.442848138147491, 此时loss是: 50.832651468812045\n",
      "在第1633步，我们获得了函数 f(rm) = 5.294296188821333 * rm + -10.448674245474837, 此时loss是: 50.82917364825286\n",
      "在第1634步，我们获得了函数 f(rm) = 5.2952118621827236 * rm + -10.454498951784968, 此时loss是: 50.82569750013126\n",
      "在第1635步，我们获得了函数 f(rm) = 5.29612731535007 * rm + -10.460322257414788, 此时loss是: 50.822223023643154\n",
      "在第1636步，我们获得了函数 f(rm) = 5.29704254837632 * rm + -10.46614416270112, 此时loss是: 50.81875021798454\n",
      "在第1637步，我们获得了函数 f(rm) = 5.297957561314412 * rm + -10.47196466798071, 此时loss是: 50.815279082352\n",
      "在第1638步，我们获得了函数 f(rm) = 5.298872354217273 * rm + -10.477783773590222, 此时loss是: 50.81180961594241\n",
      "在第1639步，我们获得了函数 f(rm) = 5.299786927137813 * rm + -10.483601479866234, 此时loss是: 50.808341817953036\n",
      "在第1640步，我们获得了函数 f(rm) = 5.300701280128932 * rm + -10.48941778714525, 此时loss是: 50.80487568758166\n",
      "在第1641步，我们获得了函数 f(rm) = 5.301615413243518 * rm + -10.495232695763688, 此时loss是: 50.80141122402631\n",
      "在第1642步，我们获得了函数 f(rm) = 5.302529326534445 * rm + -10.50104620605789, 此时loss是: 50.79794842648528\n",
      "在第1643步，我们获得了函数 f(rm) = 5.303443020054574 * rm + -10.506858318364111, 此时loss是: 50.794487294157626\n",
      "在第1644步，我们获得了函数 f(rm) = 5.304356493856754 * rm + -10.51266903301853, 此时loss是: 50.79102782624247\n",
      "在第1645步，我们获得了函数 f(rm) = 5.305269747993822 * rm + -10.518478350357244, 此时loss是: 50.7875700219394\n",
      "在第1646步，我们获得了函数 f(rm) = 5.306182782518599 * rm + -10.524286270716267, 此时loss是: 50.78411388044842\n",
      "在第1647步，我们获得了函数 f(rm) = 5.307095597483898 * rm + -10.530092794431535, 此时loss是: 50.78065940096995\n",
      "在第1648步，我们获得了函数 f(rm) = 5.308008192942516 * rm + -10.535897921838902, 此时loss是: 50.77720658270466\n",
      "在第1649步，我们获得了函数 f(rm) = 5.308920568947238 * rm + -10.54170165327414, 此时loss是: 50.773755424853825\n",
      "在第1650步，我们获得了函数 f(rm) = 5.309832725550837 * rm + -10.547503989072943, 此时loss是: 50.77030592661883\n",
      "在第1651步，我们获得了函数 f(rm) = 5.310744662806074 * rm + -10.553304929570924, 此时loss是: 50.76685808720164\n",
      "在第1652步，我们获得了函数 f(rm) = 5.311656380765694 * rm + -10.559104475103611, 此时loss是: 50.76341190580469\n",
      "在第1653步，我们获得了函数 f(rm) = 5.312567879482432 * rm + -10.564902626006457, 此时loss是: 50.75996738163044\n",
      "在第1654步，我们获得了函数 f(rm) = 5.313479159009011 * rm + -10.570699382614832, 此时loss是: 50.75652451388216\n",
      "在第1655步，我们获得了函数 f(rm) = 5.31439021939814 * rm + -10.576494745264023, 此时loss是: 50.75308330176313\n",
      "在第1656步，我们获得了函数 f(rm) = 5.315301060702515 * rm + -10.58228871428924, 此时loss是: 50.74964374447722\n",
      "在第1657步，我们获得了函数 f(rm) = 5.316211682974819 * rm + -10.58808129002561, 此时loss是: 50.746205841228644\n",
      "在第1658步，我们获得了函数 f(rm) = 5.317122086267724 * rm + -10.593872472808181, 此时loss是: 50.74276959122205\n",
      "在第1659步，我们获得了函数 f(rm) = 5.318032270633888 * rm + -10.59966226297192, 此时loss是: 50.7393349936624\n",
      "在第1660步，我们获得了函数 f(rm) = 5.318942236125958 * rm + -10.605450660851712, 此时loss是: 50.735902047755005\n",
      "在第1661步，我们获得了函数 f(rm) = 5.319851982796567 * rm + -10.611237666782364, 此时loss是: 50.73247075270565\n",
      "在第1662步，我们获得了函数 f(rm) = 5.3207615106983335 * rm + -10.6170232810986, 此时loss是: 50.72904110772047\n",
      "在第1663步，我们获得了函数 f(rm) = 5.321670819883868 * rm + -10.622807504135066, 此时loss是: 50.725613112005924\n",
      "在第1664步，我们获得了函数 f(rm) = 5.322579910405763 * rm + -10.628590336226326, 此时loss是: 50.72218676476893\n",
      "在第1665步，我们获得了函数 f(rm) = 5.323488782316603 * rm + -10.634371777706862, 此时loss是: 50.71876206521674\n",
      "在第1666步，我们获得了函数 f(rm) = 5.324397435668957 * rm + -10.64015182891108, 此时loss是: 50.715339012557045\n",
      "在第1667步，我们获得了函数 f(rm) = 5.325305870515383 * rm + -10.6459304901733, 此时loss是: 50.711917605997826\n",
      "在第1668步，我们获得了函数 f(rm) = 5.326214086908426 * rm + -10.651707761827765, 此时loss是: 50.708497844747505\n",
      "在第1669步，我们获得了函数 f(rm) = 5.327122084900616 * rm + -10.65748364420864, 此时loss是: 50.7050797280149\n",
      "在第1670步，我们获得了函数 f(rm) = 5.328029864544473 * rm + -10.663258137650004, 此时loss是: 50.70166325500917\n",
      "在第1671步，我们获得了函数 f(rm) = 5.328937425892505 * rm + -10.66903124248586, 此时loss是: 50.69824842493994\n",
      "在第1672步，我们获得了函数 f(rm) = 5.329844768997205 * rm + -10.674802959050126, 此时loss是: 50.69483523701702\n",
      "在第1673步，我们获得了函数 f(rm) = 5.330751893911056 * rm + -10.680573287676646, 此时loss是: 50.691423690450726\n",
      "在第1674步，我们获得了函数 f(rm) = 5.331658800686523 * rm + -10.68634222869918, 此时loss是: 50.68801378445188\n",
      "在第1675步，我们获得了函数 f(rm) = 5.3325654893760674 * rm + -10.692109782451409, 此时loss是: 50.68460551823143\n",
      "在第1676步，我们获得了函数 f(rm) = 5.33347196003213 * rm + -10.697875949266932, 此时loss是: 50.68119889100089\n",
      "在第1677步，我们获得了函数 f(rm) = 5.334378212707141 * rm + -10.703640729479268, 此时loss是: 50.67779390197206\n",
      "在第1678步，我们获得了函数 f(rm) = 5.3352842474535205 * rm + -10.709404123421857, 此时loss是: 50.674390550357224\n",
      "在第1679步，我们获得了函数 f(rm) = 5.336190064323673 * rm + -10.71516613142806, 此时loss是: 50.67098883536886\n",
      "在第1680步，我们获得了函数 f(rm) = 5.337095663369993 * rm + -10.720926753831154, 此时loss是: 50.66758875622002\n",
      "在第1681步，我们获得了函数 f(rm) = 5.338001044644861 * rm + -10.72668599096434, 此时loss是: 50.66419031212399\n",
      "在第1682步，我们获得了函数 f(rm) = 5.338906208200644 * rm + -10.732443843160736, 此时loss是: 50.66079350229455\n",
      "在第1683步，我们获得了函数 f(rm) = 5.3398111540896975 * rm + -10.738200310753381, 此时loss是: 50.65739832594578\n",
      "在第1684步，我们获得了函数 f(rm) = 5.340715882364364 * rm + -10.743955394075234, 此时loss是: 50.65400478229222\n",
      "在第1685步，我们获得了函数 f(rm) = 5.341620393076976 * rm + -10.749709093459174, 此时loss是: 50.65061287054849\n",
      "在第1686步，我们获得了函数 f(rm) = 5.342524686279848 * rm + -10.755461409237999, 此时loss是: 50.647222589930244\n",
      "在第1687步，我们获得了函数 f(rm) = 5.343428762025288 * rm + -10.761212341744427, 此时loss是: 50.643833939652716\n",
      "在第1688步，我们获得了函数 f(rm) = 5.344332620365586 * rm + -10.766961891311098, 此时loss是: 50.64044691893207\n",
      "在第1689步，我们获得了函数 f(rm) = 5.3452362613530235 * rm + -10.77271005827057, 此时loss是: 50.63706152698462\n",
      "在第1690步，我们获得了函数 f(rm) = 5.3461396850398675 * rm + -10.778456842955324, 此时loss是: 50.63367776302716\n",
      "在第1691步，我们获得了函数 f(rm) = 5.347042891478372 * rm + -10.784202245697754, 此时loss是: 50.63029562627678\n",
      "在第1692步，我们获得了函数 f(rm) = 5.34794588072078 * rm + -10.789946266830183, 此时loss是: 50.626915115950965\n",
      "在第1693步，我们获得了函数 f(rm) = 5.3488486528193215 * rm + -10.795688906684848, 此时loss是: 50.623536231267636\n",
      "在第1694步，我们获得了函数 f(rm) = 5.349751207826212 * rm + -10.801430165593908, 此时loss是: 50.620158971444944\n",
      "在第1695步，我们获得了函数 f(rm) = 5.350653545793657 * rm + -10.807170043889442, 此时loss是: 50.61678333570165\n",
      "在第1696步，我们获得了函数 f(rm) = 5.351555666773849 * rm + -10.81290854190345, 此时loss是: 50.61340932325667\n",
      "在第1697步，我们获得了函数 f(rm) = 5.352457570818967 * rm + -10.818645659967851, 此时loss是: 50.61003693332936\n",
      "在第1698步，我们获得了函数 f(rm) = 5.353359257981177 * rm + -10.824381398414486, 此时loss是: 50.60666616513958\n",
      "在第1699步，我们获得了函数 f(rm) = 5.354260728312635 * rm + -10.830115757575113, 此时loss是: 50.60329701790736\n",
      "在第1700步，我们获得了函数 f(rm) = 5.355161981865482 * rm + -10.835848737781413, 此时loss是: 50.59992949085326\n",
      "在第1701步，我们获得了函数 f(rm) = 5.356063018691846 * rm + -10.841580339364986, 此时loss是: 50.596563583198126\n",
      "在第1702步，我们获得了函数 f(rm) = 5.356963838843845 * rm + -10.847310562657352, 此时loss是: 50.593199294163156\n",
      "在第1703步，我们获得了函数 f(rm) = 5.357864442373584 * rm + -10.853039407989952, 此时loss是: 50.58983662297016\n",
      "在第1704步，我们获得了函数 f(rm) = 5.358764829333153 * rm + -10.858766875694148, 此时loss是: 50.5864755688409\n",
      "在第1705步，我们获得了函数 f(rm) = 5.3596649997746315 * rm + -10.864492966101219, 此时loss是: 50.583116130997915\n",
      "在第1706步，我们获得了函数 f(rm) = 5.360564953750086 * rm + -10.87021767954237, 此时loss是: 50.57975830866395\n",
      "在第1707步，我们获得了函数 f(rm) = 5.361464691311572 * rm + -10.87594101634872, 此时loss是: 50.57640210106204\n",
      "在第1708步，我们获得了函数 f(rm) = 5.36236421251113 * rm + -10.881662976851315, 此时loss是: 50.5730475074157\n",
      "在第1709步，我们获得了函数 f(rm) = 5.363263517400789 * rm + -10.887383561381116, 此时loss是: 50.56969452694885\n",
      "在第1710步，我们获得了函数 f(rm) = 5.364162606032565 * rm + -10.893102770269005, 此时loss是: 50.56634315888574\n",
      "在第1711步，我们获得了函数 f(rm) = 5.365061478458462 * rm + -10.898820603845786, 此时loss是: 50.562993402450914\n",
      "在第1712步，我们获得了函数 f(rm) = 5.365960134730473 * rm + -10.904537062442186, 此时loss是: 50.559645256869494\n",
      "在第1713步，我们获得了函数 f(rm) = 5.366858574900576 * rm + -10.910252146388848, 此时loss是: 50.55629872136671\n",
      "在第1714步，我们获得了函数 f(rm) = 5.3677567990207375 * rm + -10.915965856016335, 此时loss是: 50.55295379516833\n",
      "在第1715步，我们获得了函数 f(rm) = 5.368654807142911 * rm + -10.921678191655136, 此时loss是: 50.54961047750047\n",
      "在第1716步，我们获得了函数 f(rm) = 5.369552599319039 * rm + -10.927389153635655, 此时loss是: 50.546268767589574\n",
      "在第1717步，我们获得了函数 f(rm) = 5.370450175601051 * rm + -10.93309874228822, 此时loss是: 50.54292866466261\n",
      "在第1718步，我们获得了函数 f(rm) = 5.3713475360408625 * rm + -10.938806957943077, 此时loss是: 50.53959016794667\n",
      "在第1719步，我们获得了函数 f(rm) = 5.372244680690377 * rm + -10.944513800930395, 此时loss是: 50.53625327666944\n",
      "在第1720步，我们获得了函数 f(rm) = 5.373141609601488 * rm + -10.950219271580261, 此时loss是: 50.53291799005882\n",
      "在第1721步，我们获得了函数 f(rm) = 5.374038322826072 * rm + -10.955923370222687, 此时loss是: 50.52958430734315\n",
      "在第1722步，我们获得了函数 f(rm) = 5.374934820415998 * rm + -10.9616260971876, 此时loss是: 50.52625222775118\n",
      "在第1723步，我们获得了函数 f(rm) = 5.37583110242312 * rm + -10.96732745280485, 此时loss是: 50.52292175051195\n",
      "在第1724步，我们获得了函数 f(rm) = 5.376727168899278 * rm + -10.97302743740421, 此时loss是: 50.51959287485493\n",
      "在第1725步，我们获得了函数 f(rm) = 5.377623019896303 * rm + -10.978726051315373, 此时loss是: 50.51626560000995\n",
      "在第1726步，我们获得了函数 f(rm) = 5.37851865546601 * rm + -10.984423294867948, 此时loss是: 50.51293992520725\n",
      "在第1727步，我们获得了函数 f(rm) = 5.379414075660204 * rm + -10.990119168391471, 此时loss是: 50.50961584967728\n",
      "在第1728步，我们获得了函数 f(rm) = 5.380309280530678 * rm + -10.995813672215395, 此时loss是: 50.50629337265097\n",
      "在第1729步，我们获得了函数 f(rm) = 5.381204270129211 * rm + -11.001506806669093, 此时loss是: 50.502972493359735\n",
      "在第1730步，我们获得了函数 f(rm) = 5.3820990445075685 * rm + -11.007198572081863, 此时loss是: 50.49965321103518\n",
      "在第1731步，我们获得了函数 f(rm) = 5.382993603717505 * rm + -11.01288896878292, 此时loss是: 50.49633552490937\n",
      "在第1732步，我们获得了函数 f(rm) = 5.383887947810765 * rm + -11.018577997101403, 此时loss是: 50.49301943421469\n",
      "在第1733步，我们获得了函数 f(rm) = 5.384782076839076 * rm + -11.024265657366367, 此时loss是: 50.48970493818385\n",
      "在第1734步，我们获得了函数 f(rm) = 5.385675990854155 * rm + -11.029951949906794, 此时loss是: 50.48639203605012\n",
      "在第1735步，我们获得了函数 f(rm) = 5.386569689907708 * rm + -11.035636875051582, 此时loss是: 50.48308072704698\n",
      "在第1736步，我们获得了函数 f(rm) = 5.387463174051425 * rm + -11.041320433129552, 此时loss是: 50.47977101040833\n",
      "在第1737步，我们获得了函数 f(rm) = 5.38835644333699 * rm + -11.047002624469448, 此时loss是: 50.47646288536836\n",
      "在第1738步，我们获得了函数 f(rm) = 5.389249497816067 * rm + -11.052683449399929, 此时loss是: 50.473156351161656\n",
      "在第1739步，我们获得了函数 f(rm) = 5.390142337540311 * rm + -11.05836290824958, 此时loss是: 50.46985140702336\n",
      "在第1740步，我们获得了函数 f(rm) = 5.391034962561366 * rm + -11.064041001346904, 此时loss是: 50.46654805218876\n",
      "在第1741步，我们获得了函数 f(rm) = 5.391927372930863 * rm + -11.069717729020331, 此时loss是: 50.46324628589349\n",
      "在第1742步，我们获得了函数 f(rm) = 5.392819568700418 * rm + -11.075393091598205, 此时loss是: 50.45994610737375\n",
      "在第1743步，我们获得了函数 f(rm) = 5.393711549921636 * rm + -11.081067089408792, 此时loss是: 50.45664751586599\n",
      "在第1744步，我们获得了函数 f(rm) = 5.39460331664611 * rm + -11.086739722780283, 此时loss是: 50.45335051060696\n",
      "在第1745步，我们获得了函数 f(rm) = 5.3954948689254225 * rm + -11.092410992040787, 此时loss是: 50.45005509083394\n",
      "在第1746步，我们获得了函数 f(rm) = 5.39638620681114 * rm + -11.098080897518333, 此时loss是: 50.44676125578446\n",
      "在第1747步，我们获得了函数 f(rm) = 5.397277330354819 * rm + -11.103749439540875, 此时loss是: 50.44346900469649\n",
      "在第1748步，我们获得了函数 f(rm) = 5.398168239608001 * rm + -11.109416618436287, 此时loss是: 50.44017833680823\n",
      "在第1749步，我们获得了函数 f(rm) = 5.399058934622219 * rm + -11.115082434532361, 此时loss是: 50.43688925135841\n",
      "在第1750步，我们获得了函数 f(rm) = 5.399949415448991 * rm + -11.120746888156814, 此时loss是: 50.433601747586046\n",
      "在第1751步，我们获得了函数 f(rm) = 5.400839682139823 * rm + -11.126409979637282, 此时loss是: 50.430315824730506\n",
      "在第1752步，我们获得了函数 f(rm) = 5.401729734746208 * rm + -11.132071709301323, 此时loss是: 50.42703148203156\n",
      "在第1753步，我们获得了函数 f(rm) = 5.402619573319629 * rm + -11.137732077476416, 此时loss是: 50.42374871872934\n",
      "在第1754步，我们获得了函数 f(rm) = 5.4035091979115535 * rm + -11.143391084489961, 此时loss是: 50.420467534064365\n",
      "在第1755步，我们获得了函数 f(rm) = 5.404398608573439 * rm + -11.14904873066928, 此时loss是: 50.417187927277446\n",
      "在第1756步，我们获得了函数 f(rm) = 5.405287805356728 * rm + -11.154705016341616, 此时loss是: 50.41390989760975\n",
      "在第1757步，我们获得了函数 f(rm) = 5.406176788312855 * rm + -11.160359941834132, 此时loss是: 50.41063344430298\n",
      "在第1758步，我们获得了函数 f(rm) = 5.4070655574932385 * rm + -11.166013507473915, 此时loss是: 50.40735856659906\n",
      "在第1759步，我们获得了函数 f(rm) = 5.407954112949285 * rm + -11.171665713587972, 此时loss是: 50.404085263740235\n",
      "在第1760步，我们获得了函数 f(rm) = 5.4088424547323894 * rm + -11.17731656050323, 此时loss是: 50.40081353496918\n",
      "在第1761步，我们获得了函数 f(rm) = 5.409730582893935 * rm + -11.18296604854654, 此时loss是: 50.39754337952902\n",
      "在第1762步，我们获得了函数 f(rm) = 5.410618497485291 * rm + -11.188614178044672, 此时loss是: 50.39427479666315\n",
      "在第1763步，我们获得了函数 f(rm) = 5.411506198557816 * rm + -11.194260949324319, 此时loss是: 50.391007785615244\n",
      "在第1764步，我们获得了函数 f(rm) = 5.412393686162853 * rm + -11.199906362712094, 此时loss是: 50.38774234562951\n",
      "在第1765步，我们获得了函数 f(rm) = 5.413280960351738 * rm + -11.205550418534532, 此时loss是: 50.38447847595049\n",
      "在第1766步，我们获得了函数 f(rm) = 5.41416802117579 * rm + -11.211193117118091, 此时loss是: 50.38121617582295\n",
      "在第1767步，我们获得了函数 f(rm) = 5.415054868686318 * rm + -11.21683445878915, 此时loss是: 50.37795544449219\n",
      "在第1768步，我们获得了函数 f(rm) = 5.415941502934618 * rm + -11.222474443874008, 此时loss是: 50.3746962812037\n",
      "在第1769步，我们获得了函数 f(rm) = 5.416827923971972 * rm + -11.228113072698886, 此时loss是: 50.37143868520356\n",
      "在第1770步，我们获得了函数 f(rm) = 5.417714131849654 * rm + -11.233750345589927, 此时loss是: 50.36818265573794\n",
      "在第1771步，我们获得了函数 f(rm) = 5.418600126618921 * rm + -11.239386262873195, 此时loss是: 50.36492819205365\n",
      "在第1772步，我们获得了函数 f(rm) = 5.419485908331021 * rm + -11.245020824874677, 此时loss是: 50.36167529339762\n",
      "在第1773步，我们获得了函数 f(rm) = 5.420371477037188 * rm + -11.25065403192028, 此时loss是: 50.35842395901728\n",
      "在第1774步，我们获得了函数 f(rm) = 5.421256832788643 * rm + -11.256285884335835, 此时loss是: 50.35517418816042\n",
      "在第1775步，我们获得了函数 f(rm) = 5.422141975636596 * rm + -11.26191638244709, 此时loss是: 50.35192598007519\n",
      "在第1776步，我们获得了函数 f(rm) = 5.423026905632246 * rm + -11.26754552657972, 此时loss是: 50.348679334009944\n",
      "在第1777步，我们获得了函数 f(rm) = 5.423911622826775 * rm + -11.27317331705932, 此时loss是: 50.3454342492137\n",
      "在第1778步，我们获得了函数 f(rm) = 5.424796127271359 * rm + -11.278799754211402, 此时loss是: 50.34219072493549\n",
      "在第1779步，我们获得了函数 f(rm) = 5.425680419017157 * rm + -11.284424838361407, 此时loss是: 50.338948760424984\n",
      "在第1780步，我们获得了函数 f(rm) = 5.426564498115316 * rm + -11.290048569834694, 此时loss是: 50.33570835493213\n",
      "在第1781步，我们获得了函数 f(rm) = 5.427448364616975 * rm + -11.295670948956543, 此时loss是: 50.332469507707195\n",
      "在第1782步，我们获得了函数 f(rm) = 5.428332018573254 * rm + -11.301291976052159, 此时loss是: 50.329232218000726\n",
      "在第1783步，我们获得了函数 f(rm) = 5.429215460035267 * rm + -11.306911651446665, 此时loss是: 50.3259964850639\n",
      "在第1784步，我们获得了函数 f(rm) = 5.430098689054112 * rm + -11.31252997546511, 此时loss是: 50.32276230814799\n",
      "在第1785步，我们获得了函数 f(rm) = 5.430981705680875 * rm + -11.318146948432458, 此时loss是: 50.319529686504744\n",
      "在第1786步，我们获得了函数 f(rm) = 5.431864509966631 * rm + -11.323762570673605, 此时loss是: 50.31629861938621\n",
      "在第1787步，我们获得了函数 f(rm) = 5.432747101962442 * rm + -11.329376842513359, 此时loss是: 50.3130691060449\n",
      "在第1788步，我们获得了函数 f(rm) = 5.4336294817193584 * rm + -11.334989764276456, 此时loss是: 50.309841145733685\n",
      "在第1789步，我们获得了函数 f(rm) = 5.434511649288417 * rm + -11.340601336287552, 此时loss是: 50.30661473770555\n",
      "在第1790步，我们获得了函数 f(rm) = 5.435393604720645 * rm + -11.346211558871223, 此时loss是: 50.3033898812142\n",
      "在第1791步，我们获得了函数 f(rm) = 5.436275348067052 * rm + -11.351820432351971, 此时loss是: 50.30016657551344\n",
      "在第1792步，我们获得了函数 f(rm) = 5.437156879378641 * rm + -11.357427957054217, 此时loss是: 50.296944819857536\n",
      "在第1793步，我们获得了函数 f(rm) = 5.4380381987064 * rm + -11.363034133302305, 此时loss是: 50.293724613501006\n",
      "在第1794步，我们获得了函数 f(rm) = 5.4389193061013055 * rm + -11.368638961420501, 此时loss是: 50.29050595569887\n",
      "在第1795步，我们获得了函数 f(rm) = 5.439800201614321 * rm + -11.374242441732992, 此时loss是: 50.287288845706584\n",
      "在第1796步，我们获得了函数 f(rm) = 5.440680885296399 * rm + -11.379844574563888, 此时loss是: 50.28407328277963\n",
      "在第1797步，我们获得了函数 f(rm) = 5.441561357198479 * rm + -11.385445360237222, 此时loss是: 50.28085926617409\n",
      "在第1798步，我们获得了函数 f(rm) = 5.442441617371486 * rm + -11.391044799076948, 此时loss是: 50.27764679514648\n",
      "在第1799步，我们获得了函数 f(rm) = 5.443321665866338 * rm + -11.396642891406941, 此时loss是: 50.27443586895336\n",
      "在第1800步，我们获得了函数 f(rm) = 5.444201502733936 * rm + -11.402239637551, 此时loss是: 50.271226486851965\n",
      "在第1801步，我们获得了函数 f(rm) = 5.445081128025171 * rm + -11.407835037832845, 此时loss是: 50.26801864809983\n",
      "在第1802步，我们获得了函数 f(rm) = 5.445960541790922 * rm + -11.413429092576118, 此时loss是: 50.26481235195462\n",
      "在第1803步，我们获得了函数 f(rm) = 5.446839744082053 * rm + -11.419021802104385, 此时loss是: 50.26160759767457\n",
      "在第1804步，我们获得了函数 f(rm) = 5.447718734949419 * rm + -11.424613166741134, 此时loss是: 50.25840438451823\n",
      "在第1805步，我们获得了函数 f(rm) = 5.448597514443861 * rm + -11.43020318680977, 此时loss是: 50.25520271174448\n",
      "在第1806步，我们获得了函数 f(rm) = 5.4494760826162105 * rm + -11.435791862633627, 此时loss是: 50.252002578612604\n",
      "在第1807步，我们获得了函数 f(rm) = 5.450354439517282 * rm + -11.441379194535958, 此时loss是: 50.24880398438223\n",
      "在第1808步，我们获得了函数 f(rm) = 5.4512325851978805 * rm + -11.446965182839941, 此时loss是: 50.24560692831327\n",
      "在第1809步，我们获得了函数 f(rm) = 5.452110519708801 * rm + -11.45254982786867, 此时loss是: 50.24241140966599\n",
      "在第1810步，我们获得了函数 f(rm) = 5.452988243100822 * rm + -11.45813312994517, 此时loss是: 50.2392174277012\n",
      "在第1811步，我们获得了函数 f(rm) = 5.453865755424711 * rm + -11.46371508939238, 此时loss是: 50.23602498167984\n",
      "在第1812步，我们获得了函数 f(rm) = 5.454743056731226 * rm + -11.469295706533167, 此时loss是: 50.232834070863255\n",
      "在第1813步，我们获得了函数 f(rm) = 5.45562014707111 * rm + -11.474874981690318, 此时loss是: 50.22964469451336\n",
      "在第1814步，我们获得了函数 f(rm) = 5.456497026495094 * rm + -11.480452915186543, 此时loss是: 50.22645685189208\n",
      "在第1815步，我们获得了函数 f(rm) = 5.4573736950538985 * rm + -11.486029507344474, 此时loss是: 50.223270542261844\n",
      "在第1816步，我们获得了函数 f(rm) = 5.45825015279823 * rm + -11.491604758486666, 此时loss是: 50.22008576488558\n",
      "在第1817步，我们获得了函数 f(rm) = 5.459126399778784 * rm + -11.497178668935597, 此时loss是: 50.21690251902648\n",
      "在第1818步，我们获得了函数 f(rm) = 5.460002436046243 * rm + -11.502751239013664, 此时loss是: 50.213720803947865\n",
      "在第1819步，我们获得了函数 f(rm) = 5.4608782616512785 * rm + -11.508322469043192, 此时loss是: 50.21054061891377\n",
      "在第1820步，我们获得了函数 f(rm) = 5.461753876644548 * rm + -11.513892359346423, 此时loss是: 50.20736196318834\n",
      "在第1821步，我们获得了函数 f(rm) = 5.462629281076698 * rm + -11.519460910245526, 此时loss是: 50.20418483603614\n",
      "在第1822步，我们获得了函数 f(rm) = 5.463504474998363 * rm + -11.525028122062588, 此时loss是: 50.201009236722186\n",
      "在第1823步，我们获得了函数 f(rm) = 5.464379458460163 * rm + -11.530593995119624, 此时loss是: 50.197835164511794\n",
      "在第1824步，我们获得了函数 f(rm) = 5.465254231512711 * rm + -11.536158529738566, 此时loss是: 50.19466261867035\n",
      "在第1825步，我们获得了函数 f(rm) = 5.466128794206602 * rm + -11.541721726241274, 此时loss是: 50.191491598464054\n",
      "在第1826步，我们获得了函数 f(rm) = 5.467003146592424 * rm + -11.547283584949525, 此时loss是: 50.18832210315921\n",
      "在第1827步，我们获得了函数 f(rm) = 5.4678772887207465 * rm + -11.552844106185024, 此时loss是: 50.18515413202254\n",
      "在第1828步，我们获得了函数 f(rm) = 5.468751220642134 * rm + -11.558403290269395, 此时loss是: 50.181987684320994\n",
      "在第1829步，我们获得了函数 f(rm) = 5.469624942407134 * rm + -11.563961137524185, 此时loss是: 50.17882275932215\n",
      "在第1830步，我们获得了函数 f(rm) = 5.470498454066283 * rm + -11.569517648270866, 此时loss是: 50.17565935629357\n",
      "在第1831步，我们获得了函数 f(rm) = 5.471371755670107 * rm + -11.57507282283083, 此时loss是: 50.172497474503366\n",
      "在第1832步，我们获得了函数 f(rm) = 5.472244847269117 * rm + -11.580626661525391, 此时loss是: 50.169337113220166\n",
      "在第1833步，我们获得了函数 f(rm) = 5.473117728913814 * rm + -11.58617916467579, 此时loss是: 50.16617827171262\n",
      "在第1834步，我们获得了函数 f(rm) = 5.473990400654685 * rm + -11.59173033260319, 此时loss是: 50.16302094924996\n",
      "在第1835步，我们获得了函数 f(rm) = 5.474862862542209 * rm + -11.597280165628671, 此时loss是: 50.15986514510169\n",
      "在第1836步，我们获得了函数 f(rm) = 5.475735114626847 * rm + -11.602828664073243, 此时loss是: 50.15671085853765\n",
      "在第1837步，我们获得了函数 f(rm) = 5.4766071569590515 * rm + -11.608375828257834, 此时loss是: 50.15355808882807\n",
      "在第1838步，我们获得了函数 f(rm) = 5.477478989589263 * rm + -11.6139216585033, 此时loss是: 50.1504068352435\n",
      "在第1839步，我们获得了函数 f(rm) = 5.478350612567908 * rm + -11.61946615513041, 此时loss是: 50.1472570970549\n",
      "在第1840步，我们获得了函数 f(rm) = 5.479222025945402 * rm + -11.625009318459869, 此时loss是: 50.14410887353345\n",
      "在第1841步，我们获得了函数 f(rm) = 5.48009322977215 * rm + -11.630551148812293, 此时loss是: 50.14096216395094\n",
      "在第1842步，我们获得了函数 f(rm) = 5.480964224098542 * rm + -11.636091646508229, 此时loss是: 50.13781696757909\n",
      "在第1843步，我们获得了函数 f(rm) = 5.481835008974955 * rm + -11.641630811868142, 此时loss是: 50.13467328369036\n",
      "在第1844步，我们获得了函数 f(rm) = 5.482705584451759 * rm + -11.647168645212423, 此时loss是: 50.13153111155746\n",
      "在第1845步，我们获得了函数 f(rm) = 5.483575950579307 * rm + -11.652705146861384, 此时loss是: 50.12839045045329\n",
      "在第1846步，我们获得了函数 f(rm) = 5.484446107407942 * rm + -11.658240317135261, 此时loss是: 50.12525129965133\n",
      "在第1847步，我们获得了函数 f(rm) = 5.485316054987996 * rm + -11.663774156354213, 此时loss是: 50.122113658425164\n",
      "在第1848步，我们获得了函数 f(rm) = 5.486185793369785 * rm + -11.669306664838322, 此时loss是: 50.11897752604905\n",
      "在第1849步，我们获得了函数 f(rm) = 5.4870553226036165 * rm + -11.674837842907593, 此时loss是: 50.11584290179722\n",
      "在第1850步，我们获得了函数 f(rm) = 5.4879246427397845 * rm + -11.680367690881953, 此时loss是: 50.11270978494448\n",
      "在第1851步，我们获得了函数 f(rm) = 5.488793753828572 * rm + -11.685896209081253, 此时loss是: 50.109578174765964\n",
      "在第1852步，我们获得了函数 f(rm) = 5.48966265592025 * rm + -11.691423397825268, 此时loss是: 50.1064480705372\n",
      "在第1853步，我们获得了函数 f(rm) = 5.490531349065074 * rm + -11.696949257433696, 此时loss是: 50.10331947153386\n",
      "在第1854步，我们获得了函数 f(rm) = 5.491399833313291 * rm + -11.702473788226154, 此时loss是: 50.10019237703218\n",
      "在第1855步，我们获得了函数 f(rm) = 5.492268108715136 * rm + -11.707996990522188, 此时loss是: 50.097066786308716\n",
      "在第1856步，我们获得了函数 f(rm) = 5.493136175320829 * rm + -11.713518864641264, 此时loss是: 50.093942698640184\n",
      "在第1857步，我们获得了函数 f(rm) = 5.49400403318058 * rm + -11.719039410902772, 此时loss是: 50.090820113303934\n",
      "在第1858步，我们获得了函数 f(rm) = 5.494871682344588 * rm + -11.724558629626024, 此时loss是: 50.08769902957735\n",
      "在第1859步，我们获得了函数 f(rm) = 5.495739122863037 * rm + -11.730076521130256, 此时loss是: 50.0845794467385\n",
      "在第1860步，我们获得了函数 f(rm) = 5.496606354786101 * rm + -11.735593085734628, 此时loss是: 50.081461364065525\n",
      "在第1861步，我们获得了函数 f(rm) = 5.497473378163941 * rm + -11.741108323758223, 此时loss是: 50.07834478083699\n",
      "在第1862步，我们获得了函数 f(rm) = 5.498340193046707 * rm + -11.746622235520046, 此时loss是: 50.075229696331974\n",
      "在第1863步，我们获得了函数 f(rm) = 5.499206799484537 * rm + -11.752134821339027, 此时loss是: 50.07211610982963\n",
      "在第1864步，我们获得了函数 f(rm) = 5.500073197527555 * rm + -11.757646081534018, 此时loss是: 50.06900402060957\n",
      "在第1865步，我们获得了函数 f(rm) = 5.500939387225874 * rm + -11.763156016423794, 此时loss是: 50.06589342795185\n",
      "在第1866步，我们获得了函数 f(rm) = 5.501805368629595 * rm + -11.768664626327055, 此时loss是: 50.062784331136825\n",
      "在第1867步，我们获得了函数 f(rm) = 5.502671141788809 * rm + -11.774171911562425, 此时loss是: 50.05967672944507\n",
      "在第1868步，我们获得了函数 f(rm) = 5.503536706753591 * rm + -11.779677872448447, 此时loss是: 50.05657062215762\n",
      "在第1869步，我们获得了函数 f(rm) = 5.504402063574006 * rm + -11.785182509303592, 此时loss是: 50.0534660085559\n",
      "在第1870步，我们获得了函数 f(rm) = 5.505267212300108 * rm + -11.790685822446253, 此时loss是: 50.05036288792148\n",
      "在第1871步，我们获得了函数 f(rm) = 5.506132152981938 * rm + -11.796187812194745, 此时loss是: 50.047261259536576\n",
      "在第1872步，我们获得了函数 f(rm) = 5.506996885669524 * rm + -11.801688478867309, 此时loss是: 50.044161122683526\n",
      "在第1873步，我们获得了函数 f(rm) = 5.507861410412884 * rm + -11.807187822782106, 此时loss是: 50.04106247664506\n",
      "在第1874步，我们获得了函数 f(rm) = 5.508725727262021 * rm + -11.812685844257224, 此时loss是: 50.03796532070422\n",
      "在第1875步，我们获得了函数 f(rm) = 5.5095898362669296 * rm + -11.818182543610673, 此时loss是: 50.034869654144494\n",
      "在第1876步，我们获得了函数 f(rm) = 5.51045373747759 * rm + -11.823677921160387, 此时loss是: 50.03177547624966\n",
      "在第1877步，我们获得了函数 f(rm) = 5.51131743094397 * rm + -11.829171977224222, 此时loss是: 50.028682786303776\n",
      "在第1878步，我们获得了函数 f(rm) = 5.512180916716027 * rm + -11.83466471211996, 此时loss是: 50.02559158359143\n",
      "在第1879步，我们获得了函数 f(rm) = 5.513044194843707 * rm + -11.840156126165303, 此时loss是: 50.02250186739731\n",
      "在第1880步，我们获得了函数 f(rm) = 5.513907265376941 * rm + -11.84564621967788, 此时loss是: 50.01941363700665\n",
      "在第1881步，我们获得了函数 f(rm) = 5.51477012836565 * rm + -11.851134992975243, 此时loss是: 50.01632689170481\n",
      "在第1882步，我们获得了函数 f(rm) = 5.5156327838597425 * rm + -11.856622446374868, 此时loss是: 50.013241630777834\n",
      "在第1883步，我们获得了函数 f(rm) = 5.516495231909117 * rm + -11.862108580194151, 此时loss是: 50.01015785351172\n",
      "在第1884步，我们获得了函数 f(rm) = 5.517357472563656 * rm + -11.867593394750418, 此时loss是: 50.007075559193204\n",
      "在第1885步，我们获得了函数 f(rm) = 5.518219505873233 * rm + -11.873076890360913, 此时loss是: 50.00399474710892\n",
      "在第1886步，我们获得了函数 f(rm) = 5.519081331887709 * rm + -11.878559067342806, 此时loss是: 50.00091541654629\n",
      "在第1887步，我们获得了函数 f(rm) = 5.519942950656932 * rm + -11.884039926013191, 此时loss是: 49.99783756679269\n",
      "在第1888步，我们获得了函数 f(rm) = 5.52080436223074 * rm + -11.889519466689086, 此时loss是: 49.99476119713604\n",
      "在第1889步，我们获得了函数 f(rm) = 5.521665566658957 * rm + -11.89499768968743, 此时loss是: 49.99168630686478\n",
      "在第1890步，我们获得了函数 f(rm) = 5.522526563991395 * rm + -11.900474595325091, 此时loss是: 49.98861289526738\n",
      "在第1891步，我们获得了函数 f(rm) = 5.5233873542778555 * rm + -11.905950183918856, 此时loss是: 49.98554096163264\n",
      "在第1892步，我们获得了函数 f(rm) = 5.524247937568128 * rm + -11.911424455785436, 此时loss是: 49.98247050524994\n",
      "在第1893步，我们获得了函数 f(rm) = 5.525108313911988 * rm + -11.91689741124147, 此时loss是: 49.9794015254089\n",
      "在第1894步，我们获得了函数 f(rm) = 5.525968483359202 * rm + -11.922369050603518, 此时loss是: 49.97633402139948\n",
      "在第1895步，我们获得了函数 f(rm) = 5.526828445959522 * rm + -11.927839374188062, 此时loss是: 49.97326799251193\n",
      "在第1896步，我们获得了函数 f(rm) = 5.527688201762688 * rm + -11.933308382311512, 此时loss是: 49.97020343803678\n",
      "在第1897步，我们获得了函数 f(rm) = 5.528547750818431 * rm + -11.9387760752902, 此时loss是: 49.967140357265244\n",
      "在第1898步，我们获得了函数 f(rm) = 5.5294070931764665 * rm + -11.94424245344038, 此时loss是: 49.96407874948847\n",
      "在第1899步，我们获得了函数 f(rm) = 5.5302662288865 * rm + -11.949707517078231, 此时loss是: 49.961018613998164\n",
      "在第1900步，我们获得了函数 f(rm) = 5.531125157998225 * rm + -11.95517126651986, 此时loss是: 49.95795995008636\n",
      "在第1901步，我们获得了函数 f(rm) = 5.531983880561321 * rm + -11.960633702081294, 此时loss是: 49.95490275704529\n",
      "在第1902步，我们获得了函数 f(rm) = 5.53284239662546 * rm + -11.966094824078484, 此时loss是: 49.951847034167635\n",
      "在第1903步，我们获得了函数 f(rm) = 5.533700706240296 * rm + -11.971554632827305, 此时loss是: 49.94879278074653\n",
      "在第1904步，我们获得了函数 f(rm) = 5.534558809455478 * rm + -11.977013128643557, 此时loss是: 49.94573999607536\n",
      "在第1905步，我们获得了函数 f(rm) = 5.535416706320636 * rm + -11.982470311842965, 此时loss是: 49.94268867944769\n",
      "在第1906步，我们获得了函数 f(rm) = 5.5362743968853945 * rm + -11.987926182741177, 此时loss是: 49.93963883015759\n",
      "在第1907步，我们获得了函数 f(rm) = 5.53713188119936 * rm + -11.993380741653763, 此时loss是: 49.93659044749944\n",
      "在第1908步，我们获得了函数 f(rm) = 5.537989159312132 * rm + -11.998833988896221, 此时loss是: 49.93354353076798\n",
      "在第1909步，我们获得了函数 f(rm) = 5.538846231273296 * rm + -12.004285924783971, 此时loss是: 49.93049807925824\n",
      "在第1910步，我们获得了函数 f(rm) = 5.539703097132425 * rm + -12.009736549632358, 此时loss是: 49.92745409226563\n",
      "在第1911步，我们获得了函数 f(rm) = 5.540559756939081 * rm + -12.015185863756649, 此时loss是: 49.92441156908595\n",
      "在第1912步，我们获得了函数 f(rm) = 5.541416210742815 * rm + -12.020633867472037, 此时loss是: 49.9213705090151\n",
      "在第1913步，我们获得了函数 f(rm) = 5.542272458593164 * rm + -12.026080561093641, 此时loss是: 49.91833091134958\n",
      "在第1914步，我们获得了函数 f(rm) = 5.543128500539654 * rm + -12.0315259449365, 此时loss是: 49.91529277538625\n",
      "在第1915步，我们获得了函数 f(rm) = 5.543984336631799 * rm + -12.036970019315582, 此时loss是: 49.91225610042201\n",
      "在第1916步，我们获得了函数 f(rm) = 5.544839966919103 * rm + -12.042412784545775, 此时loss是: 49.90922088575441\n",
      "在第1917步，我们获得了函数 f(rm) = 5.545695391451054 * rm + -12.047854240941891, 此时loss是: 49.906187130681175\n",
      "在第1918步，我们获得了函数 f(rm) = 5.546550610277132 * rm + -12.053294388818673, 此时loss是: 49.90315483450043\n",
      "在第1919步，我们获得了函数 f(rm) = 5.547405623446802 * rm + -12.058733228490778, 此时loss是: 49.9001239965105\n",
      "在第1920步，我们获得了函数 f(rm) = 5.5482604310095205 * rm + -12.064170760272798, 此时loss是: 49.89709461601038\n",
      "在第1921步，我们获得了函数 f(rm) = 5.54911503301473 * rm + -12.069606984479242, 此时loss是: 49.894066692299006\n",
      "在第1922步，我们获得了函数 f(rm) = 5.549969429511861 * rm + -12.075041901424544, 此时loss是: 49.89104022467582\n",
      "在第1923步，我们获得了函数 f(rm) = 5.550823620550331 * rm + -12.080475511423067, 此时loss是: 49.88801521244072\n",
      "在第1924步，我们获得了函数 f(rm) = 5.551677606179549 * rm + -12.085907814789095, 此时loss是: 49.88499165489379\n",
      "在第1925步，我们获得了函数 f(rm) = 5.55253138644891 * rm + -12.091338811836836, 此时loss是: 49.881969551335345\n",
      "在第1926步，我们获得了函数 f(rm) = 5.553384961407797 * rm + -12.096768502880424, 此时loss是: 49.878948901066416\n",
      "在第1927步，我们获得了函数 f(rm) = 5.554238331105582 * rm + -12.102196888233916, 此时loss是: 49.875929703388046\n",
      "在第1928步，我们获得了函数 f(rm) = 5.555091495591623 * rm + -12.107623968211294, 此时loss是: 49.87291195760169\n",
      "在第1929步，我们获得了函数 f(rm) = 5.555944454915269 * rm + -12.113049743126465, 此时loss是: 49.869895663009096\n",
      "在第1930步，我们获得了函数 f(rm) = 5.556797209125857 * rm + -12.118474213293261, 此时loss是: 49.86688081891244\n",
      "在第1931步，我们获得了函数 f(rm) = 5.557649758272708 * rm + -12.123897379025438, 此时loss是: 49.86386742461424\n",
      "在第1932步，我们获得了函数 f(rm) = 5.558502102405137 * rm + -12.129319240636676, 此时loss是: 49.86085547941728\n",
      "在第1933步，我们获得了函数 f(rm) = 5.559354241572443 * rm + -12.13473979844058, 此时loss是: 49.85784498262469\n",
      "在第1934步，我们获得了函数 f(rm) = 5.5602061758239145 * rm + -12.140159052750677, 此时loss是: 49.85483593354\n",
      "在第1935步，我们获得了函数 f(rm) = 5.561057905208828 * rm + -12.145577003880424, 此时loss是: 49.85182833146702\n",
      "在第1936步，我们获得了函数 f(rm) = 5.561909429776449 * rm + -12.1509936521432, 此时loss是: 49.84882217570977\n",
      "在第1937步，我们获得了函数 f(rm) = 5.562760749576029 * rm + -12.156408997852306, 此时loss是: 49.845817465572935\n",
      "在第1938步，我们获得了函数 f(rm) = 5.56361186465681 * rm + -12.161823041320972, 此时loss是: 49.84281420036121\n",
      "在第1939步，我们获得了函数 f(rm) = 5.564462775068021 * rm + -12.167235782862349, 此时loss是: 49.839812379379765\n",
      "在第1940步，我们获得了函数 f(rm) = 5.565313480858879 * rm + -12.172647222789516, 此时loss是: 49.836812001934135\n",
      "在第1941步，我们获得了函数 f(rm) = 5.5661639820785895 * rm + -12.178057361415474, 此时loss是: 49.8338130673301\n",
      "在第1942步，我们获得了函数 f(rm) = 5.567014278776347 * rm + -12.183466199053152, 此时loss是: 49.83081557487387\n",
      "在第1943步，我们获得了函数 f(rm) = 5.567864371001334 * rm + -12.188873736015399, 此时loss是: 49.82781952387187\n",
      "在第1944步，我们获得了函数 f(rm) = 5.568714258802718 * rm + -12.194279972614993, 此时loss是: 49.82482491363093\n",
      "在第1945步，我们获得了函数 f(rm) = 5.569563942229659 * rm + -12.199684909164635, 此时loss是: 49.82183174345826\n",
      "在第1946步，我们获得了函数 f(rm) = 5.5704134213313035 * rm + -12.205088545976949, 此时loss是: 49.81884001266132\n",
      "在第1947步，我们获得了函数 f(rm) = 5.571262696156785 * rm + -12.210490883364487, 此时loss是: 49.81584972054788\n",
      "在第1948步，我们获得了函数 f(rm) = 5.572111766755227 * rm + -12.215891921639727, 此时loss是: 49.812860866426156\n",
      "在第1949步，我们获得了函数 f(rm) = 5.57296063317574 * rm + -12.221291661115067, 此时loss是: 49.80987344960468\n",
      "在第1950步，我们获得了函数 f(rm) = 5.573809295467424 * rm + -12.226690102102832, 此时loss是: 49.806887469392244\n",
      "在第1951步，我们获得了函数 f(rm) = 5.574657753679365 * rm + -12.232087244915274, 此时loss是: 49.80390292509787\n",
      "在第1952步，我们获得了函数 f(rm) = 5.57550600786064 * rm + -12.237483089864567, 此时loss是: 49.80091981603119\n",
      "在第1953步，我们获得了函数 f(rm) = 5.576354058060312 * rm + -12.24287763726281, 此时loss是: 49.79793814150204\n",
      "在第1954步，我们获得了函数 f(rm) = 5.577201904327432 * rm + -12.248270887422029, 此时loss是: 49.79495790082045\n",
      "在第1955步，我们获得了函数 f(rm) = 5.578049546711042 * rm + -12.253662840654176, 此时loss是: 49.79197909329706\n",
      "在第1956步，我们获得了函数 f(rm) = 5.578896985260169 * rm + -12.259053497271124, 此时loss是: 49.78900171824247\n",
      "在第1957步，我们获得了函数 f(rm) = 5.579744220023829 * rm + -12.264442857584672, 此时loss是: 49.78602577496801\n",
      "在第1958步，我们获得了函数 f(rm) = 5.580591251051028 * rm + -12.269830921906546, 此时loss是: 49.783051262785094\n",
      "在第1959步，我们获得了函数 f(rm) = 5.581438078390759 * rm + -12.275217690548397, 此时loss是: 49.780078181005464\n",
      "在第1960步，我们获得了函数 f(rm) = 5.582284702092003 * rm + -12.2806031638218, 此时loss是: 49.77710652894145\n",
      "在第1961步，我们获得了函数 f(rm) = 5.583131122203729 * rm + -12.285987342038254, 此时loss是: 49.77413630590527\n",
      "在第1962步，我们获得了函数 f(rm) = 5.583977338774894 * rm + -12.291370225509185, 此时loss是: 49.77116751120993\n",
      "在第1963步，我们获得了函数 f(rm) = 5.584823351854445 * rm + -12.296751814545944, 此时loss是: 49.76820014416844\n",
      "在第1964步，我们获得了函数 f(rm) = 5.5856691614913165 * rm + -12.302132109459805, 此时loss是: 49.765234204094284\n",
      "在第1965步，我们获得了函数 f(rm) = 5.58651476773443 * rm + -12.30751111056197, 此时loss是: 49.76226969030124\n",
      "在第1966步，我们获得了函数 f(rm) = 5.587360170632696 * rm + -12.312888818163565, 此时loss是: 49.759306602103536\n",
      "在第1967步，我们获得了函数 f(rm) = 5.588205370235013 * rm + -12.318265232575639, 此时loss是: 49.75634493881546\n",
      "在第1968步，我们获得了函数 f(rm) = 5.589050366590269 * rm + -12.32364035410917, 此时loss是: 49.75338469975191\n",
      "在第1969步，我们获得了函数 f(rm) = 5.589895159747338 * rm + -12.329014183075058, 此时loss是: 49.75042588422794\n",
      "在第1970步，我们获得了函数 f(rm) = 5.590739749755085 * rm + -12.334386719784131, 此时loss是: 49.74746849155899\n",
      "在第1971步，我们获得了函数 f(rm) = 5.591584136662361 * rm + -12.339757964547141, 此时loss是: 49.744512521060834\n",
      "在第1972步，我们获得了函数 f(rm) = 5.592428320518005 * rm + -12.345127917674764, 此时loss是: 49.74155797204956\n",
      "在第1973步，我们获得了函数 f(rm) = 5.593272301370848 * rm + -12.350496579477603, 此时loss是: 49.73860484384168\n",
      "在第1974步，我们获得了函数 f(rm) = 5.594116079269703 * rm + -12.355863950266187, 此时loss是: 49.735653135753815\n",
      "在第1975步，我们获得了函数 f(rm) = 5.594959654263379 * rm + -12.361230030350967, 此时loss是: 49.73270284710314\n",
      "在第1976步，我们获得了函数 f(rm) = 5.595803026400665 * rm + -12.366594820042323, 此时loss是: 49.729753977207096\n",
      "在第1977步，我们获得了函数 f(rm) = 5.596646195730345 * rm + -12.371958319650558, 此时loss是: 49.7268065253833\n",
      "在第1978步，我们获得了函数 f(rm) = 5.597489162301187 * rm + -12.377320529485901, 此时loss是: 49.723860490949875\n",
      "在第1979步，我们获得了函数 f(rm) = 5.59833192616195 * rm + -12.38268144985851, 此时loss是: 49.72091587322528\n",
      "在第1980步，我们获得了函数 f(rm) = 5.59917448736138 * rm + -12.38804108107846, 此时loss是: 49.71797267152809\n",
      "在第1981步，我们获得了函数 f(rm) = 5.600016845948212 * rm + -12.39339942345576, 此时loss是: 49.715030885177605\n",
      "在第1982步，我们获得了函数 f(rm) = 5.600859001971166 * rm + -12.398756477300338, 此时loss是: 49.7120905134929\n",
      "在第1983步，我们获得了函数 f(rm) = 5.601700955478956 * rm + -12.404112242922054, 此时loss是: 49.70915155579389\n",
      "在第1984步，我们获得了函数 f(rm) = 5.60254270652028 * rm + -12.409466720630686, 此时loss是: 49.70621401140057\n",
      "在第1985步，我们获得了函数 f(rm) = 5.603384255143825 * rm + -12.414819910735943, 此时loss是: 49.70327787963332\n",
      "在第1986步，我们获得了函数 f(rm) = 5.6042256013982685 * rm + -12.420171813547459, 此时loss是: 49.70034315981271\n",
      "在第1987步，我们获得了函数 f(rm) = 5.605066745332274 * rm + -12.42552242937479, 此时loss是: 49.69740985125987\n",
      "在第1988步，我们获得了函数 f(rm) = 5.6059076869944935 * rm + -12.430871758527424, 此时loss是: 49.69447795329607\n",
      "在第1989步，我们获得了函数 f(rm) = 5.606748426433567 * rm + -12.436219801314767, 此时loss是: 49.691547465243026\n",
      "在第1990步，我们获得了函数 f(rm) = 5.6075889636981255 * rm + -12.441566558046155, 此时loss是: 49.68861838642269\n",
      "在第1991步，我们获得了函数 f(rm) = 5.608429298836786 * rm + -12.44691202903085, 此时loss是: 49.68569071615744\n",
      "在第1992步，我们获得了函数 f(rm) = 5.609269431898152 * rm + -12.452256214578037, 此时loss是: 49.68276445376982\n",
      "在第1993步，我们获得了函数 f(rm) = 5.610109362930819 * rm + -12.45759911499683, 此时loss是: 49.679839598582916\n",
      "在第1994步，我们获得了函数 f(rm) = 5.610949091983371 * rm + -12.462940730596264, 此时loss是: 49.67691614991998\n",
      "在第1995步，我们获得了函数 f(rm) = 5.611788619104376 * rm + -12.468281061685303, 此时loss是: 49.673994107104576\n",
      "在第1996步，我们获得了函数 f(rm) = 5.612627944342394 * rm + -12.473620108572838, 此时loss是: 49.67107346946072\n",
      "在第1997步，我们获得了函数 f(rm) = 5.613467067745972 * rm + -12.478957871567683, 此时loss是: 49.66815423631267\n",
      "在第1998步，我们获得了函数 f(rm) = 5.614305989363646 * rm + -12.484294350978578, 此时loss是: 49.66523640698506\n",
      "在第1999步，我们获得了函数 f(rm) = 5.61514470924394 * rm + -12.48962954711419, 此时loss是: 49.662319980802735\n"
     ]
    }
   ],
   "source": [
    "def partial_k(k, b, x, y):\n",
    "    return 2 * np.mean((k * x + b - y) * x)\n",
    "\n",
    "def partial_b(k, b, x, y):\n",
    "    return 2 * np.mean(k * x + b - y)\n",
    "\n",
    "k, b = random.random(), random.random()\n",
    "min_loss = float('inf')\n",
    "best_k, bes_b = None, None\n",
    "learning_rate = 1e-2\n",
    "\n",
    "for step in range(2000):\n",
    "    k, b = k + (-1 * partial_k(k, b, x, y) * learning_rate), b + (-1 * partial_b(k, b, x, y) * learning_rate)\n",
    "    y_hats = k * x + b\n",
    "    current_loss = loss(y_hats, y)\n",
    "    \n",
    "    if current_loss < min_loss:\n",
    "        min_loss = current_loss\n",
    "        best_k, best_b = k, b\n",
    "        print('在第{}步，我们获得了函数 f(rm) = {} * rm + {}, 此时loss是: {}'.format(step, k, b, current_loss))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(5.61514470924394, -12.48962954711419)"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "best_k, best_b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x7f729c77c110>"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x, y)\n",
    "plt.scatter(x, [best_k * rm + best_b for rm in x])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Supervised Learning"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 我们把房价的预测 变成更加负责，精细的模型，该怎么做？"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$ f(x) = k * x + b $$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$ f(x) = k2 * \\sigma(k_1 * x + b_1) + b2 $$\n",
    "\n",
    "$$ \\sigma(x) = \\frac{1}{1 + e^(-x)} $$ "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sigmoid(x):\n",
    "    return 1 / (1 + np.exp(-x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f729c7fe850>]"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sub_x = np.linspace(-10, 10)\n",
    "plt.plot(sub_x, sigmoid(sub_x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "def random_linear(x):\n",
    "    k, b = random.random(), random.random()\n",
    "    return k * x + b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "def complex_function(x):\n",
    "    return (random_linear(x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "for _ in range(10):\n",
    "    index = random.randrange(0, len(sub_x))\n",
    "    sub_x_1, sub_x_2 = sub_x[:index], sub_x[index:]\n",
    "    new_y = np.concatenate((complex_function(sub_x_1), complex_function(sub_x_2)))\n",
    "    plt.plot(sub_x, new_y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 我们可以通过简单的、基本的模块，经过反复的叠加，来实现更加复杂的函数"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 面向越来越越复杂的函数？计算机如何求导？"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. 什么是机器学习？\n",
    "## 2. KNN这种方法的缺陷，提出线性拟合的背景是什么\n",
    "## 3. 怎么样通过监督的方法，来获得更快的函数权值更新\n",
    "## 4. 非线性函数和线性函数的结合，可以拟合出非常复杂的函数\n",
    "## 5. 深度学习我们可以通过基本的函数模块，来拟合更加复杂的函数"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Assigment:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$ L2-Loss(y, \\hat{y}) = \\frac{1}{n}\\sum{(\\hat{y} - y)}^2 $$\n",
    "$$ L1-Loss(y, \\hat{y}) = \\frac{1}{n}\\sum{|(\\hat{y} - y)|} $$\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 将课堂代码中的L2-Loss 变成L1Loss 并且实现梯度下降"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "从0开始实现L1Loss梯度下降"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1 导入包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2 加载数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dict_keys(['data', 'target', 'feature_names', 'DESCR', 'filename'])"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.datasets import load_boston\n",
    "boston = load_boston()\n",
    "boston.keys()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = boston.data\n",
    "y = boston.target"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>CRIM</th>\n",
       "      <th>ZN</th>\n",
       "      <th>INDUS</th>\n",
       "      <th>CHAS</th>\n",
       "      <th>NOX</th>\n",
       "      <th>RM</th>\n",
       "      <th>AGE</th>\n",
       "      <th>DIS</th>\n",
       "      <th>RAD</th>\n",
       "      <th>TAX</th>\n",
       "      <th>PTRATIO</th>\n",
       "      <th>B</th>\n",
       "      <th>LSTAT</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.00632</td>\n",
       "      <td>18.0</td>\n",
       "      <td>2.31</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.538</td>\n",
       "      <td>6.575</td>\n",
       "      <td>65.2</td>\n",
       "      <td>4.0900</td>\n",
       "      <td>1.0</td>\n",
       "      <td>296.0</td>\n",
       "      <td>15.3</td>\n",
       "      <td>396.90</td>\n",
       "      <td>4.98</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.02731</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.07</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.469</td>\n",
       "      <td>6.421</td>\n",
       "      <td>78.9</td>\n",
       "      <td>4.9671</td>\n",
       "      <td>2.0</td>\n",
       "      <td>242.0</td>\n",
       "      <td>17.8</td>\n",
       "      <td>396.90</td>\n",
       "      <td>9.14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.02729</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.07</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.469</td>\n",
       "      <td>7.185</td>\n",
       "      <td>61.1</td>\n",
       "      <td>4.9671</td>\n",
       "      <td>2.0</td>\n",
       "      <td>242.0</td>\n",
       "      <td>17.8</td>\n",
       "      <td>392.83</td>\n",
       "      <td>4.03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.03237</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.18</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.458</td>\n",
       "      <td>6.998</td>\n",
       "      <td>45.8</td>\n",
       "      <td>6.0622</td>\n",
       "      <td>3.0</td>\n",
       "      <td>222.0</td>\n",
       "      <td>18.7</td>\n",
       "      <td>394.63</td>\n",
       "      <td>2.94</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.06905</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.18</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.458</td>\n",
       "      <td>7.147</td>\n",
       "      <td>54.2</td>\n",
       "      <td>6.0622</td>\n",
       "      <td>3.0</td>\n",
       "      <td>222.0</td>\n",
       "      <td>18.7</td>\n",
       "      <td>396.90</td>\n",
       "      <td>5.33</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      CRIM    ZN  INDUS  CHAS    NOX     RM   AGE     DIS  RAD    TAX  \\\n",
       "0  0.00632  18.0   2.31   0.0  0.538  6.575  65.2  4.0900  1.0  296.0   \n",
       "1  0.02731   0.0   7.07   0.0  0.469  6.421  78.9  4.9671  2.0  242.0   \n",
       "2  0.02729   0.0   7.07   0.0  0.469  7.185  61.1  4.9671  2.0  242.0   \n",
       "3  0.03237   0.0   2.18   0.0  0.458  6.998  45.8  6.0622  3.0  222.0   \n",
       "4  0.06905   0.0   2.18   0.0  0.458  7.147  54.2  6.0622  3.0  222.0   \n",
       "\n",
       "   PTRATIO       B  LSTAT  \n",
       "0     15.3  396.90   4.98  \n",
       "1     17.8  396.90   9.14  \n",
       "2     17.8  392.83   4.03  \n",
       "3     18.7  394.63   2.94  \n",
       "4     18.7  396.90   5.33  "
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "boston = pd.DataFrame(boston.data, columns = boston.feature_names)\n",
    "boston.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>CRIM</th>\n",
       "      <th>ZN</th>\n",
       "      <th>INDUS</th>\n",
       "      <th>CHAS</th>\n",
       "      <th>NOX</th>\n",
       "      <th>RM</th>\n",
       "      <th>AGE</th>\n",
       "      <th>DIS</th>\n",
       "      <th>RAD</th>\n",
       "      <th>TAX</th>\n",
       "      <th>PTRATIO</th>\n",
       "      <th>B</th>\n",
       "      <th>LSTAT</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>506.000000</td>\n",
       "      <td>506.000000</td>\n",
       "      <td>506.000000</td>\n",
       "      <td>506.000000</td>\n",
       "      <td>506.000000</td>\n",
       "      <td>506.000000</td>\n",
       "      <td>506.000000</td>\n",
       "      <td>506.000000</td>\n",
       "      <td>506.000000</td>\n",
       "      <td>506.000000</td>\n",
       "      <td>506.000000</td>\n",
       "      <td>506.000000</td>\n",
       "      <td>506.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>3.613524</td>\n",
       "      <td>11.363636</td>\n",
       "      <td>11.136779</td>\n",
       "      <td>0.069170</td>\n",
       "      <td>0.554695</td>\n",
       "      <td>6.284634</td>\n",
       "      <td>68.574901</td>\n",
       "      <td>3.795043</td>\n",
       "      <td>9.549407</td>\n",
       "      <td>408.237154</td>\n",
       "      <td>18.455534</td>\n",
       "      <td>356.674032</td>\n",
       "      <td>12.653063</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>8.601545</td>\n",
       "      <td>23.322453</td>\n",
       "      <td>6.860353</td>\n",
       "      <td>0.253994</td>\n",
       "      <td>0.115878</td>\n",
       "      <td>0.702617</td>\n",
       "      <td>28.148861</td>\n",
       "      <td>2.105710</td>\n",
       "      <td>8.707259</td>\n",
       "      <td>168.537116</td>\n",
       "      <td>2.164946</td>\n",
       "      <td>91.294864</td>\n",
       "      <td>7.141062</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.006320</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.460000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.385000</td>\n",
       "      <td>3.561000</td>\n",
       "      <td>2.900000</td>\n",
       "      <td>1.129600</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>187.000000</td>\n",
       "      <td>12.600000</td>\n",
       "      <td>0.320000</td>\n",
       "      <td>1.730000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>0.082045</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.190000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.449000</td>\n",
       "      <td>5.885500</td>\n",
       "      <td>45.025000</td>\n",
       "      <td>2.100175</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>279.000000</td>\n",
       "      <td>17.400000</td>\n",
       "      <td>375.377500</td>\n",
       "      <td>6.950000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>0.256510</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>9.690000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.538000</td>\n",
       "      <td>6.208500</td>\n",
       "      <td>77.500000</td>\n",
       "      <td>3.207450</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>330.000000</td>\n",
       "      <td>19.050000</td>\n",
       "      <td>391.440000</td>\n",
       "      <td>11.360000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>3.677083</td>\n",
       "      <td>12.500000</td>\n",
       "      <td>18.100000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.624000</td>\n",
       "      <td>6.623500</td>\n",
       "      <td>94.075000</td>\n",
       "      <td>5.188425</td>\n",
       "      <td>24.000000</td>\n",
       "      <td>666.000000</td>\n",
       "      <td>20.200000</td>\n",
       "      <td>396.225000</td>\n",
       "      <td>16.955000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>88.976200</td>\n",
       "      <td>100.000000</td>\n",
       "      <td>27.740000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.871000</td>\n",
       "      <td>8.780000</td>\n",
       "      <td>100.000000</td>\n",
       "      <td>12.126500</td>\n",
       "      <td>24.000000</td>\n",
       "      <td>711.000000</td>\n",
       "      <td>22.000000</td>\n",
       "      <td>396.900000</td>\n",
       "      <td>37.970000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             CRIM          ZN       INDUS        CHAS         NOX          RM  \\\n",
       "count  506.000000  506.000000  506.000000  506.000000  506.000000  506.000000   \n",
       "mean     3.613524   11.363636   11.136779    0.069170    0.554695    6.284634   \n",
       "std      8.601545   23.322453    6.860353    0.253994    0.115878    0.702617   \n",
       "min      0.006320    0.000000    0.460000    0.000000    0.385000    3.561000   \n",
       "25%      0.082045    0.000000    5.190000    0.000000    0.449000    5.885500   \n",
       "50%      0.256510    0.000000    9.690000    0.000000    0.538000    6.208500   \n",
       "75%      3.677083   12.500000   18.100000    0.000000    0.624000    6.623500   \n",
       "max     88.976200  100.000000   27.740000    1.000000    0.871000    8.780000   \n",
       "\n",
       "              AGE         DIS         RAD         TAX     PTRATIO           B  \\\n",
       "count  506.000000  506.000000  506.000000  506.000000  506.000000  506.000000   \n",
       "mean    68.574901    3.795043    9.549407  408.237154   18.455534  356.674032   \n",
       "std     28.148861    2.105710    8.707259  168.537116    2.164946   91.294864   \n",
       "min      2.900000    1.129600    1.000000  187.000000   12.600000    0.320000   \n",
       "25%     45.025000    2.100175    4.000000  279.000000   17.400000  375.377500   \n",
       "50%     77.500000    3.207450    5.000000  330.000000   19.050000  391.440000   \n",
       "75%     94.075000    5.188425   24.000000  666.000000   20.200000  396.225000   \n",
       "max    100.000000   12.126500   24.000000  711.000000   22.000000  396.900000   \n",
       "\n",
       "            LSTAT  \n",
       "count  506.000000  \n",
       "mean    12.653063  \n",
       "std      7.141062  \n",
       "min      1.730000  \n",
       "25%      6.950000  \n",
       "50%     11.360000  \n",
       "75%     16.955000  \n",
       "max     37.970000  "
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "boston.describe() # 数据描述，可以查看每个每个变量的统计量"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3 数据预处理"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "归一化或者标准化首先在维数非常多的时候，可以防止某一维或某几维对数据影响过大，其次可以程序可以运行更快。方法很多，标准化，min-max,z-score,p范数等，具体怎么使用，要根据数据集的特征来选择。\n",
    "\n",
    "[延伸阅读-数据标准化的迷思之深度学习领域](https://zhuanlan.zhihu.com/p/81560511)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>CRIM</th>\n",
       "      <th>ZN</th>\n",
       "      <th>INDUS</th>\n",
       "      <th>CHAS</th>\n",
       "      <th>NOX</th>\n",
       "      <th>RM</th>\n",
       "      <th>AGE</th>\n",
       "      <th>DIS</th>\n",
       "      <th>RAD</th>\n",
       "      <th>TAX</th>\n",
       "      <th>PTRATIO</th>\n",
       "      <th>B</th>\n",
       "      <th>LSTAT</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>5.060000e+02</td>\n",
       "      <td>5.060000e+02</td>\n",
       "      <td>5.060000e+02</td>\n",
       "      <td>5.060000e+02</td>\n",
       "      <td>5.060000e+02</td>\n",
       "      <td>5.060000e+02</td>\n",
       "      <td>5.060000e+02</td>\n",
       "      <td>5.060000e+02</td>\n",
       "      <td>5.060000e+02</td>\n",
       "      <td>5.060000e+02</td>\n",
       "      <td>5.060000e+02</td>\n",
       "      <td>5.060000e+02</td>\n",
       "      <td>5.060000e+02</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>-8.787437e-17</td>\n",
       "      <td>-6.343191e-16</td>\n",
       "      <td>-2.682911e-15</td>\n",
       "      <td>4.701992e-16</td>\n",
       "      <td>2.490322e-15</td>\n",
       "      <td>-1.145230e-14</td>\n",
       "      <td>-1.407855e-15</td>\n",
       "      <td>9.210902e-16</td>\n",
       "      <td>5.441409e-16</td>\n",
       "      <td>-8.868619e-16</td>\n",
       "      <td>-9.205636e-15</td>\n",
       "      <td>8.163101e-15</td>\n",
       "      <td>-3.370163e-16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>1.000990e+00</td>\n",
       "      <td>1.000990e+00</td>\n",
       "      <td>1.000990e+00</td>\n",
       "      <td>1.000990e+00</td>\n",
       "      <td>1.000990e+00</td>\n",
       "      <td>1.000990e+00</td>\n",
       "      <td>1.000990e+00</td>\n",
       "      <td>1.000990e+00</td>\n",
       "      <td>1.000990e+00</td>\n",
       "      <td>1.000990e+00</td>\n",
       "      <td>1.000990e+00</td>\n",
       "      <td>1.000990e+00</td>\n",
       "      <td>1.000990e+00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>-4.197819e-01</td>\n",
       "      <td>-4.877224e-01</td>\n",
       "      <td>-1.557842e+00</td>\n",
       "      <td>-2.725986e-01</td>\n",
       "      <td>-1.465882e+00</td>\n",
       "      <td>-3.880249e+00</td>\n",
       "      <td>-2.335437e+00</td>\n",
       "      <td>-1.267069e+00</td>\n",
       "      <td>-9.828429e-01</td>\n",
       "      <td>-1.313990e+00</td>\n",
       "      <td>-2.707379e+00</td>\n",
       "      <td>-3.907193e+00</td>\n",
       "      <td>-1.531127e+00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>-4.109696e-01</td>\n",
       "      <td>-4.877224e-01</td>\n",
       "      <td>-8.676906e-01</td>\n",
       "      <td>-2.725986e-01</td>\n",
       "      <td>-9.130288e-01</td>\n",
       "      <td>-5.686303e-01</td>\n",
       "      <td>-8.374480e-01</td>\n",
       "      <td>-8.056878e-01</td>\n",
       "      <td>-6.379618e-01</td>\n",
       "      <td>-7.675760e-01</td>\n",
       "      <td>-4.880391e-01</td>\n",
       "      <td>2.050715e-01</td>\n",
       "      <td>-7.994200e-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>-3.906665e-01</td>\n",
       "      <td>-4.877224e-01</td>\n",
       "      <td>-2.110985e-01</td>\n",
       "      <td>-2.725986e-01</td>\n",
       "      <td>-1.442174e-01</td>\n",
       "      <td>-1.084655e-01</td>\n",
       "      <td>3.173816e-01</td>\n",
       "      <td>-2.793234e-01</td>\n",
       "      <td>-5.230014e-01</td>\n",
       "      <td>-4.646726e-01</td>\n",
       "      <td>2.748590e-01</td>\n",
       "      <td>3.811865e-01</td>\n",
       "      <td>-1.812536e-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>7.396560e-03</td>\n",
       "      <td>4.877224e-02</td>\n",
       "      <td>1.015999e+00</td>\n",
       "      <td>-2.725986e-01</td>\n",
       "      <td>5.986790e-01</td>\n",
       "      <td>4.827678e-01</td>\n",
       "      <td>9.067981e-01</td>\n",
       "      <td>6.623709e-01</td>\n",
       "      <td>1.661245e+00</td>\n",
       "      <td>1.530926e+00</td>\n",
       "      <td>8.065758e-01</td>\n",
       "      <td>4.336510e-01</td>\n",
       "      <td>6.030188e-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>9.933931e+00</td>\n",
       "      <td>3.804234e+00</td>\n",
       "      <td>2.422565e+00</td>\n",
       "      <td>3.668398e+00</td>\n",
       "      <td>2.732346e+00</td>\n",
       "      <td>3.555044e+00</td>\n",
       "      <td>1.117494e+00</td>\n",
       "      <td>3.960518e+00</td>\n",
       "      <td>1.661245e+00</td>\n",
       "      <td>1.798194e+00</td>\n",
       "      <td>1.638828e+00</td>\n",
       "      <td>4.410519e-01</td>\n",
       "      <td>3.548771e+00</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               CRIM            ZN         INDUS          CHAS           NOX  \\\n",
       "count  5.060000e+02  5.060000e+02  5.060000e+02  5.060000e+02  5.060000e+02   \n",
       "mean  -8.787437e-17 -6.343191e-16 -2.682911e-15  4.701992e-16  2.490322e-15   \n",
       "std    1.000990e+00  1.000990e+00  1.000990e+00  1.000990e+00  1.000990e+00   \n",
       "min   -4.197819e-01 -4.877224e-01 -1.557842e+00 -2.725986e-01 -1.465882e+00   \n",
       "25%   -4.109696e-01 -4.877224e-01 -8.676906e-01 -2.725986e-01 -9.130288e-01   \n",
       "50%   -3.906665e-01 -4.877224e-01 -2.110985e-01 -2.725986e-01 -1.442174e-01   \n",
       "75%    7.396560e-03  4.877224e-02  1.015999e+00 -2.725986e-01  5.986790e-01   \n",
       "max    9.933931e+00  3.804234e+00  2.422565e+00  3.668398e+00  2.732346e+00   \n",
       "\n",
       "                 RM           AGE           DIS           RAD           TAX  \\\n",
       "count  5.060000e+02  5.060000e+02  5.060000e+02  5.060000e+02  5.060000e+02   \n",
       "mean  -1.145230e-14 -1.407855e-15  9.210902e-16  5.441409e-16 -8.868619e-16   \n",
       "std    1.000990e+00  1.000990e+00  1.000990e+00  1.000990e+00  1.000990e+00   \n",
       "min   -3.880249e+00 -2.335437e+00 -1.267069e+00 -9.828429e-01 -1.313990e+00   \n",
       "25%   -5.686303e-01 -8.374480e-01 -8.056878e-01 -6.379618e-01 -7.675760e-01   \n",
       "50%   -1.084655e-01  3.173816e-01 -2.793234e-01 -5.230014e-01 -4.646726e-01   \n",
       "75%    4.827678e-01  9.067981e-01  6.623709e-01  1.661245e+00  1.530926e+00   \n",
       "max    3.555044e+00  1.117494e+00  3.960518e+00  1.661245e+00  1.798194e+00   \n",
       "\n",
       "            PTRATIO             B         LSTAT  \n",
       "count  5.060000e+02  5.060000e+02  5.060000e+02  \n",
       "mean  -9.205636e-15  8.163101e-15 -3.370163e-16  \n",
       "std    1.000990e+00  1.000990e+00  1.000990e+00  \n",
       "min   -2.707379e+00 -3.907193e+00 -1.531127e+00  \n",
       "25%   -4.880391e-01  2.050715e-01 -7.994200e-01  \n",
       "50%    2.748590e-01  3.811865e-01 -1.812536e-01  \n",
       "75%    8.065758e-01  4.336510e-01  6.030188e-01  \n",
       "max    1.638828e+00  4.410519e-01  3.548771e+00  "
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "Scale = StandardScaler() # z = (x - u) / s u为均值，s为标准差\n",
    "X = Scale.fit_transform(X) # 对于线性模型，一般需要做归一化或者标准化处理，否则会出现梯度爆炸，对于树模型一般不需要\n",
    "X = pd.DataFrame(X, columns = ['CRIM','ZN','INDUS','CHAS','NOX','RM','AGE','DIS','RAD','TAX','PTRATIO','B','LSTAT'])\n",
    "X.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>CRIM</th>\n",
       "      <th>ZN</th>\n",
       "      <th>INDUS</th>\n",
       "      <th>CHAS</th>\n",
       "      <th>NOX</th>\n",
       "      <th>RM</th>\n",
       "      <th>AGE</th>\n",
       "      <th>DIS</th>\n",
       "      <th>RAD</th>\n",
       "      <th>TAX</th>\n",
       "      <th>PTRATIO</th>\n",
       "      <th>B</th>\n",
       "      <th>LSTAT</th>\n",
       "      <th>bias</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.419782</td>\n",
       "      <td>0.284830</td>\n",
       "      <td>-1.287909</td>\n",
       "      <td>-0.272599</td>\n",
       "      <td>-0.144217</td>\n",
       "      <td>0.413672</td>\n",
       "      <td>-0.120013</td>\n",
       "      <td>0.140214</td>\n",
       "      <td>-0.982843</td>\n",
       "      <td>-0.666608</td>\n",
       "      <td>-1.459000</td>\n",
       "      <td>0.441052</td>\n",
       "      <td>-1.075562</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.417339</td>\n",
       "      <td>-0.487722</td>\n",
       "      <td>-0.593381</td>\n",
       "      <td>-0.272599</td>\n",
       "      <td>-0.740262</td>\n",
       "      <td>0.194274</td>\n",
       "      <td>0.367166</td>\n",
       "      <td>0.557160</td>\n",
       "      <td>-0.867883</td>\n",
       "      <td>-0.987329</td>\n",
       "      <td>-0.303094</td>\n",
       "      <td>0.441052</td>\n",
       "      <td>-0.492439</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-0.417342</td>\n",
       "      <td>-0.487722</td>\n",
       "      <td>-0.593381</td>\n",
       "      <td>-0.272599</td>\n",
       "      <td>-0.740262</td>\n",
       "      <td>1.282714</td>\n",
       "      <td>-0.265812</td>\n",
       "      <td>0.557160</td>\n",
       "      <td>-0.867883</td>\n",
       "      <td>-0.987329</td>\n",
       "      <td>-0.303094</td>\n",
       "      <td>0.396427</td>\n",
       "      <td>-1.208727</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.416750</td>\n",
       "      <td>-0.487722</td>\n",
       "      <td>-1.306878</td>\n",
       "      <td>-0.272599</td>\n",
       "      <td>-0.835284</td>\n",
       "      <td>1.016303</td>\n",
       "      <td>-0.809889</td>\n",
       "      <td>1.077737</td>\n",
       "      <td>-0.752922</td>\n",
       "      <td>-1.106115</td>\n",
       "      <td>0.113032</td>\n",
       "      <td>0.416163</td>\n",
       "      <td>-1.361517</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.412482</td>\n",
       "      <td>-0.487722</td>\n",
       "      <td>-1.306878</td>\n",
       "      <td>-0.272599</td>\n",
       "      <td>-0.835284</td>\n",
       "      <td>1.228577</td>\n",
       "      <td>-0.511180</td>\n",
       "      <td>1.077737</td>\n",
       "      <td>-0.752922</td>\n",
       "      <td>-1.106115</td>\n",
       "      <td>0.113032</td>\n",
       "      <td>0.441052</td>\n",
       "      <td>-1.026501</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>501</th>\n",
       "      <td>-0.413229</td>\n",
       "      <td>-0.487722</td>\n",
       "      <td>0.115738</td>\n",
       "      <td>-0.272599</td>\n",
       "      <td>0.158124</td>\n",
       "      <td>0.439316</td>\n",
       "      <td>0.018673</td>\n",
       "      <td>-0.625796</td>\n",
       "      <td>-0.982843</td>\n",
       "      <td>-0.803212</td>\n",
       "      <td>1.176466</td>\n",
       "      <td>0.387217</td>\n",
       "      <td>-0.418147</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>502</th>\n",
       "      <td>-0.415249</td>\n",
       "      <td>-0.487722</td>\n",
       "      <td>0.115738</td>\n",
       "      <td>-0.272599</td>\n",
       "      <td>0.158124</td>\n",
       "      <td>-0.234548</td>\n",
       "      <td>0.288933</td>\n",
       "      <td>-0.716639</td>\n",
       "      <td>-0.982843</td>\n",
       "      <td>-0.803212</td>\n",
       "      <td>1.176466</td>\n",
       "      <td>0.441052</td>\n",
       "      <td>-0.500850</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>503</th>\n",
       "      <td>-0.413447</td>\n",
       "      <td>-0.487722</td>\n",
       "      <td>0.115738</td>\n",
       "      <td>-0.272599</td>\n",
       "      <td>0.158124</td>\n",
       "      <td>0.984960</td>\n",
       "      <td>0.797449</td>\n",
       "      <td>-0.773684</td>\n",
       "      <td>-0.982843</td>\n",
       "      <td>-0.803212</td>\n",
       "      <td>1.176466</td>\n",
       "      <td>0.441052</td>\n",
       "      <td>-0.983048</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>504</th>\n",
       "      <td>-0.407764</td>\n",
       "      <td>-0.487722</td>\n",
       "      <td>0.115738</td>\n",
       "      <td>-0.272599</td>\n",
       "      <td>0.158124</td>\n",
       "      <td>0.725672</td>\n",
       "      <td>0.736996</td>\n",
       "      <td>-0.668437</td>\n",
       "      <td>-0.982843</td>\n",
       "      <td>-0.803212</td>\n",
       "      <td>1.176466</td>\n",
       "      <td>0.403225</td>\n",
       "      <td>-0.865302</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>505</th>\n",
       "      <td>-0.415000</td>\n",
       "      <td>-0.487722</td>\n",
       "      <td>0.115738</td>\n",
       "      <td>-0.272599</td>\n",
       "      <td>0.158124</td>\n",
       "      <td>-0.362767</td>\n",
       "      <td>0.434732</td>\n",
       "      <td>-0.613246</td>\n",
       "      <td>-0.982843</td>\n",
       "      <td>-0.803212</td>\n",
       "      <td>1.176466</td>\n",
       "      <td>0.441052</td>\n",
       "      <td>-0.669058</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>506 rows × 14 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         CRIM        ZN     INDUS      CHAS       NOX        RM       AGE  \\\n",
       "0   -0.419782  0.284830 -1.287909 -0.272599 -0.144217  0.413672 -0.120013   \n",
       "1   -0.417339 -0.487722 -0.593381 -0.272599 -0.740262  0.194274  0.367166   \n",
       "2   -0.417342 -0.487722 -0.593381 -0.272599 -0.740262  1.282714 -0.265812   \n",
       "3   -0.416750 -0.487722 -1.306878 -0.272599 -0.835284  1.016303 -0.809889   \n",
       "4   -0.412482 -0.487722 -1.306878 -0.272599 -0.835284  1.228577 -0.511180   \n",
       "..        ...       ...       ...       ...       ...       ...       ...   \n",
       "501 -0.413229 -0.487722  0.115738 -0.272599  0.158124  0.439316  0.018673   \n",
       "502 -0.415249 -0.487722  0.115738 -0.272599  0.158124 -0.234548  0.288933   \n",
       "503 -0.413447 -0.487722  0.115738 -0.272599  0.158124  0.984960  0.797449   \n",
       "504 -0.407764 -0.487722  0.115738 -0.272599  0.158124  0.725672  0.736996   \n",
       "505 -0.415000 -0.487722  0.115738 -0.272599  0.158124 -0.362767  0.434732   \n",
       "\n",
       "          DIS       RAD       TAX   PTRATIO         B     LSTAT  bias  \n",
       "0    0.140214 -0.982843 -0.666608 -1.459000  0.441052 -1.075562     1  \n",
       "1    0.557160 -0.867883 -0.987329 -0.303094  0.441052 -0.492439     1  \n",
       "2    0.557160 -0.867883 -0.987329 -0.303094  0.396427 -1.208727     1  \n",
       "3    1.077737 -0.752922 -1.106115  0.113032  0.416163 -1.361517     1  \n",
       "4    1.077737 -0.752922 -1.106115  0.113032  0.441052 -1.026501     1  \n",
       "..        ...       ...       ...       ...       ...       ...   ...  \n",
       "501 -0.625796 -0.982843 -0.803212  1.176466  0.387217 -0.418147     1  \n",
       "502 -0.716639 -0.982843 -0.803212  1.176466  0.441052 -0.500850     1  \n",
       "503 -0.773684 -0.982843 -0.803212  1.176466  0.441052 -0.983048     1  \n",
       "504 -0.668437 -0.982843 -0.803212  1.176466  0.403225 -0.865302     1  \n",
       "505 -0.613246 -0.982843 -0.803212  1.176466  0.441052 -0.669058     1  \n",
       "\n",
       "[506 rows x 14 columns]"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# y=Σwixi+b\n",
    "# 因为b的求导都为1，给数据添加一个偏置b并且设置为1，当做数据的某一个特征并且进行梯度更新 wi*b=wi\n",
    "X['bias']=1\n",
    "X"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "划分数据集，其中20%的数据用作测试集X_test,y_test,另外80%的数据用做训练集X_train,y_train，其中random_state为随机种子"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "X_train, X_test , y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X_train.shape,y_train.shape (404, 14) (404,)\n",
      "X_test.shape,y_test.shape (102, 14) (102,)\n"
     ]
    }
   ],
   "source": [
    "print(\"X_train.shape,y_train.shape\",X_train.shape,y_train.shape) # 打印数据条数\n",
    "print(\"X_test.shape,y_test.shape\",X_test.shape,y_test.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train = np.array(X_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 模型训练与梯度更新"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "def l1_cost(X, y, theta):\n",
    "    \"\"\"\n",
    "    X:特征\n",
    "    y：目标值\n",
    "    theta:模型参数\n",
    "    \"\"\"\n",
    "    k = X.shape[0]\n",
    "    total_cost = 0\n",
    "    for i in range(k):\n",
    "        total_cost += 1/k * np.abs(y[i]-theta.dot(X[i,:]))\n",
    "    return total_cost\n",
    "\n",
    "\n",
    "\n",
    "def l2_cost(X, y, theta):\n",
    "    k = X.shape[0]\n",
    "    total_cost = 0\n",
    "    for i in range(k):\n",
    "        total_cost += 1/k * (y[i]-theta.dot(X[i,:]))**2\n",
    "    return total_cost"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(10,)"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.zeros(10).shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "def step_l1_gradient(X, y, learning_rate, theta):\n",
    "    \"\"\"\n",
    "    计算MAE损失函数的梯度的函数\n",
    "    对于0处的不可微分点返回梯度值0\n",
    "    X:特征向量\n",
    "    y：目标值\n",
    "    learing_rate:学习率\n",
    "    theta:参数\n",
    "    \"\"\"\n",
    "    n = X.shape[0]\n",
    "#     print(n)\n",
    "    e = y - X @ theta\n",
    "    gradients = -(X.T @ np.sign(e)) / n # sign为符号函数\n",
    "    theta = theta - learning_rate * gradients\n",
    "    return theta"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "def step_l2_gradient(X, y, learning_rate, theta):\n",
    "    k = X.shape[0]\n",
    "    n = X.shape[1]\n",
    "    gradients = np.zeros(n)\n",
    "    for i in range(k):\n",
    "        for j in range(n):\n",
    "            gradients[j] += (-2/k) * ( y[i] - (theta.dot(X[i,:])) ) * X[i,j]\n",
    "    theta = theta - learning_rate * gradients\n",
    "    return theta"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "# def step_gradient(X, y, learning_rate, theta):\n",
    "#     \"\"\"\n",
    "#     X:特征向量\n",
    "#     y：目标值\n",
    "#     learing_rate:学习率\n",
    "#     theta:参数\n",
    "#     \"\"\"\n",
    "#     m_deriv = 0\n",
    "#     N = len(X)\n",
    "#     for i in range(N):\n",
    "#         # 计算偏导\n",
    "#         # -x(y - (mx + b)) / |mx + b|\n",
    "#         m_deriv += - X[i] * (y[i] - (theta*X[i] + b)) / abs(y[i] - (theta*X[i] + b))\n",
    "#     # We subtract because the derivatives point in direction of steepest ascent\n",
    "#     theta -= (m_deriv / float(N)) * learning_rate\n",
    "# #     theta = theta - learning_rate * gradients\n",
    "#     return theta"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "def gradient_descent(X_train, y_train, learning_rate, iterations):\n",
    "    k = X_train.shape[0]\n",
    "    n = X_train.shape[1]\n",
    "    theta = np.zeros(n)# 初始化参数 \n",
    "    loss_values=[]\n",
    "#     print(theta.shape)\n",
    "    for i in range(iterations):\n",
    "        theta = step_l1_gradient(X_train, y_train, learning_rate, theta)\n",
    "        loss=l1_cost(X_train, y_train, theta)\n",
    "        loss_values.append(loss)\n",
    "        print(i, 'cost:', loss)\n",
    "    return theta,loss_values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 cost: 22.756180733143896\n",
      "1 cost: 22.71582681282243\n",
      "2 cost: 22.675472892500967\n",
      "3 cost: 22.63511897217951\n",
      "4 cost: 22.594765051858065\n",
      "5 cost: 22.55441113153661\n",
      "6 cost: 22.51405721121515\n",
      "7 cost: 22.47370329089367\n",
      "8 cost: 22.433349370572213\n",
      "9 cost: 22.39299545025078\n",
      "10 cost: 22.35264152992932\n",
      "11 cost: 22.31228760960784\n",
      "12 cost: 22.27193368928638\n",
      "13 cost: 22.23157976896493\n",
      "14 cost: 22.191225848643473\n",
      "15 cost: 22.150871928322054\n",
      "16 cost: 22.11051800800057\n",
      "17 cost: 22.070164087679103\n",
      "18 cost: 22.02981016735765\n",
      "19 cost: 21.98945624703621\n",
      "20 cost: 21.949102326714755\n",
      "21 cost: 21.908748406393304\n",
      "22 cost: 21.868394486071857\n",
      "23 cost: 21.828040565750353\n",
      "24 cost: 21.787686645428902\n",
      "25 cost: 21.747332725107476\n",
      "26 cost: 21.706978804785994\n",
      "27 cost: 21.666624884464554\n",
      "28 cost: 21.62627096414309\n",
      "29 cost: 21.585917043821627\n",
      "30 cost: 21.545563123500166\n",
      "31 cost: 21.505209203178705\n",
      "32 cost: 21.464855282857254\n",
      "33 cost: 21.424501362535818\n",
      "34 cost: 21.384147442214335\n",
      "35 cost: 21.343793521892916\n",
      "36 cost: 21.303439601571412\n",
      "37 cost: 21.26308568124995\n",
      "38 cost: 21.222731760928504\n",
      "39 cost: 21.182377840607057\n",
      "40 cost: 21.142023920285585\n",
      "41 cost: 21.10166999996414\n",
      "42 cost: 21.061316079642683\n",
      "43 cost: 21.020962159321222\n",
      "44 cost: 20.980608238999753\n",
      "45 cost: 20.940254318678303\n",
      "46 cost: 20.899900398356863\n",
      "47 cost: 20.85954647803539\n",
      "48 cost: 20.81919255771394\n",
      "49 cost: 20.77883863739249\n",
      "50 cost: 20.73848471707103\n",
      "51 cost: 20.698130796749567\n",
      "52 cost: 20.657776876428123\n",
      "53 cost: 20.617422956106665\n",
      "54 cost: 20.57706903578519\n",
      "55 cost: 20.53671511546376\n",
      "56 cost: 20.49636119514229\n",
      "57 cost: 20.456007274820827\n",
      "58 cost: 20.415653354499362\n",
      "59 cost: 20.375299434177908\n",
      "60 cost: 20.334945513856457\n",
      "61 cost: 20.294591593534978\n",
      "62 cost: 20.254237673213517\n",
      "63 cost: 20.213883752892055\n",
      "64 cost: 20.17352983257062\n",
      "65 cost: 20.133175912249158\n",
      "66 cost: 20.09282199192772\n",
      "67 cost: 20.05246807160626\n",
      "68 cost: 20.012114151284788\n",
      "69 cost: 19.971760230963326\n",
      "70 cost: 19.931406310641872\n",
      "71 cost: 19.89105239032042\n",
      "72 cost: 19.85069846999896\n",
      "73 cost: 19.810344549677495\n",
      "74 cost: 19.769990629356062\n",
      "75 cost: 19.72963670903458\n",
      "76 cost: 19.68928278871314\n",
      "77 cost: 19.648928868391657\n",
      "78 cost: 19.608574948070224\n",
      "79 cost: 19.568221027748763\n",
      "80 cost: 19.52786710742731\n",
      "81 cost: 19.487513187105826\n",
      "82 cost: 19.44715926678441\n",
      "83 cost: 19.406805346462928\n",
      "84 cost: 19.366451426141484\n",
      "85 cost: 19.326097505820016\n",
      "86 cost: 19.28574358549856\n",
      "87 cost: 19.24538966517709\n",
      "88 cost: 19.205035744855646\n",
      "89 cost: 19.16468182453418\n",
      "90 cost: 19.12432790421273\n",
      "91 cost: 19.083973983891266\n",
      "92 cost: 19.04362006356983\n",
      "93 cost: 19.003266143248354\n",
      "94 cost: 18.962912222926892\n",
      "95 cost: 18.922558302605445\n",
      "96 cost: 18.882204382283994\n",
      "97 cost: 18.84185046196252\n",
      "98 cost: 18.801496541641058\n",
      "99 cost: 18.761142621319618\n",
      "100 cost: 18.72078870099814\n",
      "101 cost: 18.680434780676713\n",
      "102 cost: 18.64008086035526\n",
      "103 cost: 18.59972694003375\n",
      "104 cost: 18.559373019712325\n",
      "105 cost: 18.51901909939087\n",
      "106 cost: 18.478665179069413\n",
      "107 cost: 18.438311258747966\n",
      "108 cost: 18.397957338426508\n",
      "109 cost: 18.357603418105032\n",
      "110 cost: 18.317249497783553\n",
      "111 cost: 18.276895577462128\n",
      "112 cost: 18.236541657140684\n",
      "113 cost: 18.196187736819205\n",
      "114 cost: 18.15583381649776\n",
      "115 cost: 18.1154798961763\n",
      "116 cost: 18.075125975854835\n",
      "117 cost: 18.034772055533377\n",
      "118 cost: 17.99441813521191\n",
      "119 cost: 17.95406421489047\n",
      "120 cost: 17.913710294568986\n",
      "121 cost: 17.87335637424756\n",
      "122 cost: 17.833002453926092\n",
      "123 cost: 17.792648533604627\n",
      "124 cost: 17.752294613283173\n",
      "125 cost: 17.71194069296172\n",
      "126 cost: 17.671586772640257\n",
      "127 cost: 17.631232852318803\n",
      "128 cost: 17.59087893199735\n",
      "129 cost: 17.55052501167589\n",
      "130 cost: 17.51017109135443\n",
      "131 cost: 17.469817171032975\n",
      "132 cost: 17.4294632507115\n",
      "133 cost: 17.389109330390074\n",
      "134 cost: 17.34875541006861\n",
      "135 cost: 17.30840148974714\n",
      "136 cost: 17.268047569425672\n",
      "137 cost: 17.227693649104243\n",
      "138 cost: 17.187339728782785\n",
      "139 cost: 17.146985808461313\n",
      "140 cost: 17.106631888139866\n",
      "141 cost: 17.06627796781841\n",
      "142 cost: 17.025924047496932\n",
      "143 cost: 16.985570127175485\n",
      "144 cost: 16.945216206854028\n",
      "145 cost: 16.904862286532556\n",
      "146 cost: 16.864508366211112\n",
      "147 cost: 16.82415444588967\n",
      "148 cost: 16.7838005255682\n",
      "149 cost: 16.743446605246742\n",
      "150 cost: 16.703092684925284\n",
      "151 cost: 16.662738764603827\n",
      "152 cost: 16.62238484428237\n",
      "153 cost: 16.582030923960907\n",
      "154 cost: 16.541677003639457\n",
      "155 cost: 16.501323083317992\n",
      "156 cost: 16.46096916299654\n",
      "157 cost: 16.42061524267508\n",
      "158 cost: 16.380261322353626\n",
      "159 cost: 16.339907402032175\n",
      "160 cost: 16.29955348171071\n",
      "161 cost: 16.25920474629833\n",
      "162 cost: 16.219086899741118\n",
      "163 cost: 16.1789690531839\n",
      "164 cost: 16.13885120662667\n",
      "165 cost: 16.098733360069453\n",
      "166 cost: 16.058615513512237\n",
      "167 cost: 16.01849766695502\n",
      "168 cost: 15.978379820397805\n",
      "169 cost: 15.938261973840584\n",
      "170 cost: 15.898144127283363\n",
      "171 cost: 15.858026280726136\n",
      "172 cost: 15.817908434168922\n",
      "173 cost: 15.777790587611706\n",
      "174 cost: 15.7376727410545\n",
      "175 cost: 15.697554894497262\n",
      "176 cost: 15.657437047940064\n",
      "177 cost: 15.617319201382827\n",
      "178 cost: 15.577201354825606\n",
      "179 cost: 15.537083508268392\n",
      "180 cost: 15.49696566171119\n",
      "181 cost: 15.456847815153953\n",
      "182 cost: 15.416729968596739\n",
      "183 cost: 15.376612122039521\n",
      "184 cost: 15.336541025574157\n",
      "185 cost: 15.296643096384486\n",
      "186 cost: 15.2567451671948\n",
      "187 cost: 15.216847238005112\n",
      "188 cost: 15.176949308815445\n",
      "189 cost: 15.13705137962575\n",
      "190 cost: 15.09715345043605\n",
      "191 cost: 15.057255521246375\n",
      "192 cost: 15.017357592056705\n",
      "193 cost: 14.977459662867004\n",
      "194 cost: 14.937561733677319\n",
      "195 cost: 14.897663804487639\n",
      "196 cost: 14.857765875297952\n",
      "197 cost: 14.817867946108255\n",
      "198 cost: 14.777970016918573\n",
      "199 cost: 14.738072087728886\n",
      "200 cost: 14.698174158539214\n",
      "201 cost: 14.658276229349521\n",
      "202 cost: 14.618378300159844\n",
      "203 cost: 14.57848037097015\n",
      "204 cost: 14.538582441780465\n",
      "205 cost: 14.49868451259079\n",
      "206 cost: 14.458786583401094\n",
      "207 cost: 14.418888654211411\n",
      "208 cost: 14.378990725021731\n",
      "209 cost: 14.33909279583204\n",
      "210 cost: 14.29919486664236\n",
      "211 cost: 14.259296937452682\n",
      "212 cost: 14.219399008262974\n",
      "213 cost: 14.179501079073303\n",
      "214 cost: 14.13960314988363\n",
      "215 cost: 14.099705220693924\n",
      "216 cost: 14.059807291504258\n",
      "217 cost: 14.019909411300711\n",
      "218 cost: 13.980220603565916\n",
      "219 cost: 13.94053179583113\n",
      "220 cost: 13.900842988096363\n",
      "221 cost: 13.861154180361577\n",
      "222 cost: 13.821465372626777\n",
      "223 cost: 13.781776564892017\n",
      "224 cost: 13.742087757157224\n",
      "225 cost: 13.702398949422454\n",
      "226 cost: 13.662710141687665\n",
      "227 cost: 13.623021333952886\n",
      "228 cost: 13.583332526218102\n",
      "229 cost: 13.543643718483334\n",
      "230 cost: 13.503954910748542\n",
      "231 cost: 13.464266103013749\n",
      "232 cost: 13.42457729527898\n",
      "233 cost: 13.384910814524025\n",
      "234 cost: 13.345614573764042\n",
      "235 cost: 13.306318333004038\n",
      "236 cost: 13.267022092244053\n",
      "237 cost: 13.227725851484065\n",
      "238 cost: 13.188429610724086\n",
      "239 cost: 13.149133369964078\n",
      "240 cost: 13.109837129204104\n",
      "241 cost: 13.07054088844412\n",
      "242 cost: 13.031244647684115\n",
      "243 cost: 12.99194840692413\n",
      "244 cost: 12.952652166164134\n",
      "245 cost: 12.913355925404147\n",
      "246 cost: 12.874059684644164\n",
      "247 cost: 12.834763443884162\n",
      "248 cost: 12.795467203124177\n",
      "249 cost: 12.756170962364184\n",
      "250 cost: 12.716923140093499\n",
      "251 cost: 12.677706482791754\n",
      "252 cost: 12.638489825490002\n",
      "253 cost: 12.59927316818827\n",
      "254 cost: 12.560056510886525\n",
      "255 cost: 12.520839853584766\n",
      "256 cost: 12.481623196283032\n",
      "257 cost: 12.442406538981277\n",
      "258 cost: 12.403189881679529\n",
      "259 cost: 12.36397322437778\n",
      "260 cost: 12.324756567076047\n",
      "261 cost: 12.28553990977429\n",
      "262 cost: 12.24632325247255\n",
      "263 cost: 12.20710659517081\n",
      "264 cost: 12.167889937869049\n",
      "265 cost: 12.128673280567318\n",
      "266 cost: 12.089456623265564\n",
      "267 cost: 12.050239965963817\n",
      "268 cost: 12.011023308662068\n",
      "269 cost: 11.971806651360327\n",
      "270 cost: 11.932589994058581\n",
      "271 cost: 11.893373336756836\n",
      "272 cost: 11.854156679455091\n",
      "273 cost: 11.814940022153351\n",
      "274 cost: 11.775723364851606\n",
      "275 cost: 11.736506707549845\n",
      "276 cost: 11.697290050248109\n",
      "277 cost: 11.658073392946347\n",
      "278 cost: 11.618856735644604\n",
      "279 cost: 11.579640078342862\n",
      "280 cost: 11.540423421041124\n",
      "281 cost: 11.501206763739383\n",
      "282 cost: 11.461990106437629\n",
      "283 cost: 11.422773449135889\n",
      "284 cost: 11.383556791834136\n",
      "285 cost: 11.34434013453238\n",
      "286 cost: 11.305145774449045\n",
      "287 cost: 11.26602076409312\n",
      "288 cost: 11.226895753737189\n",
      "289 cost: 11.187770743381254\n",
      "290 cost: 11.148645733025306\n",
      "291 cost: 11.109520722669387\n",
      "292 cost: 11.070395712313454\n",
      "293 cost: 11.031270701957517\n",
      "294 cost: 10.992145691601593\n",
      "295 cost: 10.953020681245661\n",
      "296 cost: 10.913895670889724\n",
      "297 cost: 10.874770660533782\n",
      "298 cost: 10.835645650177868\n",
      "299 cost: 10.796520639821926\n"
     ]
    }
   ],
   "source": [
    "# 训练参数\n",
    "learning_rate = 0.04 # 学习率\n",
    "iterations = 300 # 迭代次数\n",
    "theta ,loss_values= gradient_descent(X_train, y_train, learning_rate, iterations)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
